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

时间:2014-06-22 17:59:50

标签: c# asp.net

我的<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事件处理程序时,TemplateField字典中的e.NewValues列没有键/值对。我只看到BoundField s的键/值对。

为了添加到RowEditing字典还是我需要NewValues中的其他内容,我是否会在EditItemTemplate事件处理程序中执行某些操作?< / p>

1 个答案:

答案 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 ...
}