0

編集モードに入ったときにドロップリストを持つgridviewwith 列があります。

<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ですSqlDataSource:

    <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は、グリッドの下にあるネストされたコントロールです。したがって、SqlDataSourceコントロールには、DropDownList2のすべてが表示されません。

Updateingイベントを使用して、コードビハインドに値を割り当ててみることができます。

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

注: GetDropDownListValue()でFindControl( "DropDownList2")を使用する必要があります

于 2012-04-22T19:26:18.053 に答える