Ошибка привязки данных при воссоздании объекта - PullRequest
0 голосов
/ 26 апреля 2010

На рисунке есть простое решение этой проблемы, но я не смог его найти.

У меня есть привязка данных в приложении ASP.Net к 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 Ответ

1 голос
/ 26 апреля 2010

Не включайте строку формата в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...