我的<asp:GridView>
有一些<asp:BoundField>
和一个<asp:TemplateField>
。
它还有RowEditing
和RowUpdating
个事件的事件处理程序。
<asp:TemplateField>
看起来像这样:
<asp:TemplateField HeaderText="Active">
<ItemTemplate>
<%#Eval("active") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlActive" runat="server">
<asp:ListItem Value="1" Text="Yes" />
<asp:ListItem Value="0" Text="No" />
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
我遇到的问题是,当调用RowUpdating
事件处理程序时,TemplateField
字典中的e.NewValues
列没有键/值对。我只看到BoundField
s的键/值对。
为了添加到RowEditing
字典还是我需要NewValues
中的其他内容,我是否会在EditItemTemplate
事件处理程序中执行某些操作?< / p>
答案 0 :(得分:0)
你不会忘记任何事情,但你应该知道e.NewValues
只检索gridview控件中绑定数据的键/值,而你的下拉列表没有绑定到gridview但它是一个外部控制。
因此,要从gridview获取下拉列表的键/值数据,您可以使用以下代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DropDownList ddl = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlActive");
string ddlKey = ddl.SelectedItem.Value;
string ddlValue = ddl.SelectedItem.Text;
// rest of your code here ...
}