将键值对添加到RowUpdating事件的NewValues字典中
本文关键字:NewValues 字典 事件 RowUpdating 键值对 添加 | 更新日期: 2023-09-27 18:09:41
我有一个<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
事件处理程序被调用时,e.NewValues
字典中的TemplateField
列没有键/值对。我只看到BoundField
s的键/值对。
是否有一些我忘记在RowEditing
事件处理程序中做,以便添加到NewValues
字典,或者我需要在我的EditItemTemplate
中的其他东西?
你没有忘记任何东西,但你应该知道,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 ...
}