2012-04-22 73 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()