TemplateField не обновляется в GridView с использованием LINQDataSource - PullRequest
1 голос
/ 02 сентября 2010

Я использую источник LINQDataSource для заполнения GridView университетов.

Каждый университет имеет ассоциированное состояние, которое находится в другой таблице и связано с внешним ключом (StateID).

У меня есть TemplateField в GridView, так что при его обычном просмотре он отображает StateName из таблицы состояний, а при редактировании - DDL, заполненный всем из таблицы состояний.

    <asp:TemplateField ConvertEmptyStringToNull="False" HeaderText="State" SortExpression="State">
          <EditItemTemplate>
             <asp:DropDownList ID="DropDownListStateEdit" runat="server"
             DataSourceID="LinqDataSourceStates" DataTextField="StateName" DataValueField="StateID"
             SelectedValue='<%#Eval("StateID") %>'>
             </asp:DropDownList>
          </EditItemTemplate>
          <ItemTemplate>
               <asp:Label ID="Label1" runat="server" Text='<%#Eval("State.StateName") %>'></asp:Label>
          </ItemTemplate>
    </asp:TemplateField>

Если я отлаживаюсь внутри RowUpdating, GridViewUpdateEventArgs.NewValues ​​даже не имеет ключа для State.

Вопрос: Как я могу сообщить своему gridview, что я хочу обновить этот столбец? Кажется, все BoundFields работают ...

1 Ответ

2 голосов
/ 02 сентября 2010

В EditItemTemplate вы должны использовать #Bind ("StateID") вместо #Eval ("StateID").

...