0

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>

现在我想把它带到UpdateParametersSqlDataSource

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

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

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

知道为什么吗?

4

1 回答 1

1

DropDownList2 是位于 Grid 下的嵌套控件;因此,您的 SqlDataSource 控件根本不具有 DropDownList2 的可见性。

您可以尝试使用 Updating 事件在后面的代码上分配值:

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

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

于 2012-04-22T19:26:18.053 回答