から小数点以下2桁までの値を表示しません。C#を使用してascxモジュールでDataGridに表示しようとしているMySQLデータベーステーブルにデータのコレクションがあります。データベーステーブルの値はfloatとして格納されます。私は、データベーステーブルのデータをDataGridに表示するときに問題に遭遇しています(つまり、データベースの値が3.30であれば、DataGridは3.3と表示しています)。私はDataGridの値を小数点以下2桁まで表示したいと思います。データベーステーブルに値3.00が表示されている場合、同じ値をDataGridテーブルにも表示します。C#ASCXモジュールDataGridは、MySQL-Workbenchデータベーステーブル
私は非常に広範な検索をオンラインで行っており、ここではstackoverflowで行っています。私はC# WPF DataGrid doesn't show decimal from SQLite 3 databaseのようないくつかの似たような質問を見つけましたが、私がやろうとしていることには役に立たなかった。
以下は私のascxとascx.csのコードです。これを解決するための助けがあれば幸いです。
ASCXコード
<asp:DataGrid runat="server" ID="MyDataGrid2" Width="50%" BorderColor="Black" ShowFooter="false" CellPadding="4" CellSpacing="2" Font-Names="Verdana" Font-Size="10pt" HeaderStyle-BackColor="#81DAF5" HorizontalAlign="Left" EnableViewState="false" ForeColor="#333333" GridLines="None" AutoGenerateColumns="true">
<AlternatingItemStyle BackColor="White" />
<FooterStyle BackColor="#990000" Font-Bold="true" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="true" ForeColor="White" />
<ItemStyle BackColor="#FFFBD6" ForeColor="#333333" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedItemStyle BackColor="#FFCC66" Font-Bold="true" ForeColor="Navy" />
<Columns>
<asp:BoundColumn DataField="Score" HeaderText="Score TEST" DataFormatString="{0:C}"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
ascx.csコード
protected static DataTable Pivot1(DataTable tbl)
{
var tblPivot = new DataTable();
tblPivot.Columns.Add("Score", typeof(String));
for (int col = 0; col < tbl.Columns.Count; col++)
{
var r = tblPivot.NewRow();
r[0] = tbl.Columns[col].ToString();
for (int j = 0; j < tbl.Rows.Count; j++)
r[j] = tbl.Rows[j][col];
tblPivot.Rows.Add(r);
}
return tblPivot;
}
protected void GroupButton_Click(object sender, EventArgs e)
{
using (OdbcConnection dbConnection2 = new OdbcConnection(srlsConnStr))
{
dbConnection2.Open();
OdbcCommand dbCommand5 = new OdbcCommand();
dbCommand5.Connection = dbConnection2;
dbCommand5.CommandText = string.Format(@"SELECT TRUNCATE(AVG(s.srls_c1), 2) AS c1_total,
TRUNCATE(AVG(s.srls_c2), 2) AS c2_total,
TRUNCATE(AVG(s.srls_c3), 2) AS c3_total,
TRUNCATE(AVG(s.srls_c4), 2) AS c4_total,
TRUNCATE(AVG(s.srls_c5), 2) AS c5_total,
TRUNCATE(AVG(s.srls_c6), 2) AS c6_total,
TRUNCATE(AVG(s.srls_c7), 2) AS c7_total,
TRUNCATE(AVG(s.srls_c8), 2) AS c8_total
FROM srlsvouchergroup g
JOIN srlsvouchers v ON v.voucher_group_voucher_group_id = g.group_id_pk
AND v.voucher_status = 'Taken'
JOIN srlssurvey s ON s.voucher_no = v.Voucher_no_pk
WHERE g.group_name = ?;");
dbCommand5.Parameters.AddWithValue("@group_name", inst_group_name);
OdbcDataReader dataReader5 = dbCommand5.ExecuteReader();
DataTable dt7 = new DataTable();
dt7.Load(dataReader5);
DataTable dt8 = Pivot1(dt7);
MyDataGrid_2.DataSource = dt8;
MyDataGrid_2.DataBind();
dataReader5.Close();
}
}
私はあなたの提案を試みましたが、何もしません、私は望むように値はまだ3.00ではなく3として表示されています。 3が強制的に画面に表示され、3が3.00を表示するように強制する方法はありますか? – skaur
コードをステップ実行するとどうなりますか? 'r [0] = tbl.Columns [col] .ToString();'は、その行が実行された後のように見えますか?上のコードは、データベースから出てくる浮動小数点数、二重数などの2小数点以下を確実に保持しています。その値を確認できました(値は3.00です)。それはあなたの犯人でもあります。 – ragerory
私はそれを働かせました。 'r [0] = tbl.Columns [col] .ToString();'を 'r [0] = tbl.Columns [col] .ReadOnly;'に変更しなければなりませんでした。 – skaur