GridView行更新和DropList

时间:2012-04-22 15:29:44

标签: c# .net

我有一个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>

现在我想把它带到UpdateParameters的{​​{1}}:

SqlDataSource

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

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

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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