您好我有一个数据集,其中包含从sql检索的表。它有“产品”列和“价格”列。我得到了数据集并绑定到网格。现在我想将网格的价格列格式化为2位小数(验证)。请问任何想法。 我不应该更改选择查询,因为它是一个给我数据集的SP。
答案 0 :(得分:1)
如果您既不想使用Bound-Field也不想更改select查询,那么我知道您还有两个选项可以完成此任务。首先,在使用任何循环绑定到网格之前对数据集进行值更改,第二个选项是RowDataBound事件中网格中的更改值...
通过更改数据集中的值:
foreach(dataRow[] dr in dataset.tables[your table index])
{
// max. two decimal places
string val = String.Format("{0:0.##}",Convert.ToDecimal(dr[column index]));
dr[column index] = val;
}
通过更改网格中的值:
protected void mygrid_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
mygrid.cell[cell index].Text = String.Format("{0:0.##}",Convert.ToDecimal(dataset.tables[table index][column index][Row Index]));
}
}
现在,如果您想对数据插入和更新进行应用验证,可以在textBox中应用RegularExpressionValidator ...
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator"
ControlToValidate="TextBox1" ValidationExpression="^\d{1,2}([.]\d{1})$"> ValidationGroup="MyVal"</asp:RegularExpressionValidator>
现在你必须申请
的ValidationGroup = “MYVAL”
也适用于您将执行其编辑和更新的点击控件..
答案 1 :(得分:0)
试试这个:
<asp:BoundField DataField="Price" DataFormatString="{0:C2}" HeaderText="Price" />
您需要将“DataFormatString”属性添加到绑定字段,如上所示。这会将货币值格式化为两位小数。 Check this article
DataField引用数据表中列的名称,而HeaderText引用的文本将显示为网格中列的标题。