2012-04-22 74 views
0

我有droplist当进入编辑模式gridview与柱:GridView的行更新和DropList

<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> 

但是,当我按他给我错误msg

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

任何想法为什么?

+0

做使用的FindControl( “DropDownList2”)你有任何名为'@ genre'的变量? – sarwar026 2012-04-22 15:41:17

+0

我编辑我的帖子.. – MTA 2012-04-22 15:44:05

+0

'DropDownList2'的ID可能会改变,请尝试使用javascript alert来确认:'var ddl = document.getElementById('DropDownList2');警报(DDL);' – Coder 2012-04-22 16:46:26

回答

0

DropDownList2是位于网格下的嵌套控件;因此,您的SqlDataSource控件在所有DropDownList2中都不具有可见性。

你可以尝试使用更新事件分配的代码背后的价值:

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

注:您将需要GetDropDownListValue()