图中有一个解决这个问题的简单方法,但我一直无法找到它。
我在ASP.Net应用程序中将数据绑定到GridView。根据标准用法,此gridview绑定到ObjectDataSource。
我遇到的问题是我的一个绑定字段使用属性DataFormatString =“{0:C}”,并且由于在尝试更新时显示货币格式并且重新创建了对象,因此我收到错误“ $ 13.00不是十进制的有效值。“
显然,这是使用FormatString的列然后尝试将其绑定到我在对象中的一个十进制属性(称为UnitPrice)的结果。
我假设我可以设置一些标记,可以指定如何转换回来的值?
提前感谢您的帮助。
对于任何好奇的人来说,解决方案最终看起来像这样......
<asp:TemplateField>
<HeaderTemplate>
UnitPrice
</HeaderTemplate>
<EditItemTemplate>
<asp:Label ID="lblEditItem" runat="server" Text='<%# Bind("UnitPrice", "{0:#,##0.00}") %>' Enabled="false" ></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("UnitPrice", "{0:c}") %>' ID="lblUnitPrice"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:1)
不要在EditItemTemplate中包含格式字符串。只需绑定原始值。
这样的事情:
<asp:TemplateField SortExpression="UnitPrice" HeaderText="Unit Price">
<EditItemTemplate>
<asp:TextBox ID="editUnitPrice" Runat="server" Text='<%# Bind("UnitPrice", "{0:#,##0.00}") %>' ></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("UnitPrice", "{0:c}") %>' ID="Label1"> </asp:Label>
</ItemTemplate>
</asp:TemplateField>