网格视图行更新和删除列表

本文关键字:删除 删除列 列表 更新 视图 网格 | 更新日期: 2023-09-27 18:32:04

我有一个gridview,进入编辑模式时有下拉列表的列:

<asp:TemplateField HeaderText="genre" SortExpression="genre">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList2" runat="server" 
                            DataSourceID="SqlDataSource1" DataTextField="name" DataValueField="name">
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("genre") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

现在我想把它带到SqlDataSource UpdateParameters

    <UpdateParameters>
            <asp:ControlParameter ControlID="DropDownList2" Type="string" PropertyName="SelectedValue" Name="genre" />
    </UpdateParameters>

但是当我按下时,他给了我错误的消息

Could not find control 'DropDownList2' in ControlParameter 'genre'. 

知道为什么吗?

网格视图行更新和删除列表

DropDownList2

是位于 Grid 下的嵌套控件;因此,SqlDataSource 控件在 DropDownList2 的所有控件中都没有可见性。

您可以尝试使用 Update 事件在代码隐藏上分配值:

protected void SqlDataSource_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
  e.Command.Parameters["@genre"].Value = GetDropDownListValue();
}

注意:您需要在 GetDropDownListValue() 中使用 FindControl("DropDownList2")