1

LINQDataSource を使用して大学の GridView を作成しています。

各大学には関連付けられた州があり、これは別のテーブルにあり、外部キー (StateID) によって関連付けられています。

私は GridView に TemplateField を持っているので、通常表示すると State テーブルからの StateName が表示され、編集すると State テーブルのすべてが取り込まれた 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 のキーさえありません。

質問: この列を更新したいことをグリッドビューに知らせるにはどうすればよいですか? すべての BoundFields が機能しているように見えます...

4

1 に答える 1

2

EditItemTemplate では、#Eval("StateID") の代わりに #Bind("StateID") を使用する必要があります。

于 2010-09-02T15:19:41.977 に答える