1

我使用 LINQDataSource 填充大学的 GridView。

每所大学都有一个关联的州,该州位于另一个表中,并通过外键 (StateID) 关联。

我在 GridView 中有一个 TemplateField,因此当您正常查看它时,它会显示来自 State 表的 StateName,当您编辑它时会显示一个 DDL,其中填充了 State 表中的所有内容。

    <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 甚至没有状态键。

问题:如何让我的 gridview 知道我希望它更新此列?所有 BoundFields 似乎都可以工作......

4

1 回答 1

2

在 EditItemTemplate 中,您应该使用 #Bind("StateID") 而不是 #Eval("StateID")。

于 2010-09-02T15:19:41.977 回答