从更新时的 GridView 内的下拉列表中获取所选值

本文关键字:获取 更新 GridView 下拉列表 | 更新日期: 2023-09-27 18:36:26

所以我有一些GridView。编辑行时,特定列将从标签更改为下拉列表。此下拉列表的内容是通过某些 SQL 数据源填充的。用户可以做出选择并单击"更新"。

如何实际获取下拉列表的 SelectedValue 属性?

我认为这会起作用:

    <asp:GridView ... >
        <Columns>
            ...
                <EditItemTemplate>
                    <asp:DropDownList ID="ServiceCategoriesGvDropDown" AutoPostBack="True" .../>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ... />
                </ItemTemplate>
            </asp:TemplateField>
            ...
        </Columns>
    </asp:GridView>   

然后用我的 SqlDataSource 中的 ControlParameter 连接它:

    <UpdateParameters>
        ...
        <asp:ControlParameter ControlID="ServiceCategoriesGvDropDown" PropertyName="SelectedValue" ... />
    </UpdateParameters>

但是,我得到以下异常:

System.InvalidOperationException: 在 controlParameter 'ServiceCategoriesID' 中找不到控件 'ServiceCategoriesGvDropDown'。

很明显,我的下拉菜单没有找到。也许到这个时候它已经被摧毁了?

从更新时的 GridView 内的下拉列表中获取所选值

在网格的更新事件中尝试此操作。

 protected void YourGrid_RowUpdating(object sender, GridViewUpdateEventArgs e)
 {
  DropDownList ddl= (DropDownList )YourGrid.Rows[e.RowIndex].FindControl("ddlId");
  string selectedvalue=ddl.selectedvalue;
  //Your update code goes here
 }

我认为你需要做的是:

  1. SelectedIndexChange事件附加到Gridview上的DropDownlist
  2. 抓住该事件的SelectedValue
  3. 获取对数据源UpdateParameters的引用,并以编程方式使用 SelectedValue 填充相应的参数。
  4. 调用数据源的Update方法。

您可以尝试这样做:

假设网格视图的 ID 是网格视图 1

<asp:ControlParameter ControlID="gridview1$ServiceCategoriesGvDropDown" PropertyName="SelectedValue" />