重新创建对象时的数据绑定错误

时间:2010-04-26 13:42:14

标签: asp.net vb.net data-binding object

图中有一个解决这个问题的简单方法,但我一直无法找到它。

我在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>

1 个答案:

答案 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>