2

所以我有一些GridView。当您编辑一行时,特定的列会从标签变为 DropDownList。此下拉列表的内容是通过一些 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'。

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

4

3 回答 3

3

在网格的更新事件中试试这个。

 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
 }
于 2012-06-08T06:33:25.147 回答
0

我认为你需要做的是:

  1. SelectedIndexChange事件附加到DropDownlist您的Gridview
  2. 抓住SelectedValue那个事件。
  3. 获取对您的 DataSource 的引用,UpdateParameters并以编程方式使用SelectedValue.
  4. 调用您的数据源的Update方法。
于 2012-06-07T16:41:24.080 回答
0

您可以尝试这样做:

假设gridview的ID是gridview1

<asp:ControlParameter ControlID="gridview1$ServiceCategoriesGvDropDown" PropertyName="SelectedValue" />
于 2012-06-07T17:03:39.383 回答