将键值对添加到RowUpdating事件的NewValues字典中

本文关键字:NewValues 字典 事件 RowUpdating 键值对 添加 | 更新日期: 2023-09-27 18:09:41

我有一个<asp:GridView>,它有一些<asp:BoundField>和一个<asp:TemplateField>

它也有RowEditingRowUpdating事件的事件处理程序。

<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中的其他东西?

将键值对添加到RowUpdating事件的NewValues字典中

你没有忘记任何东西,但你应该知道,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 ...
}