在formview中使用下拉列表控件

时间:2012-12-26 13:35:08

标签: asp.net sqldatasource controlparameter

我是asp.net的新手,我在使用formview中的dropdownlist控件并将其值传递给相关的sqldatasource时遇到问题。当我使用下面的代码时,我得到以下异常

异常详细信息:System.InvalidOperationException:无法在ControlParameter“categoryId”中找到控件“ddlCategory”。

表单视图中的下拉列表。

      <asp:DropDownList ID="ddlCategory" DataSourceID="ObjectDataSourceCategory" DataTextField="NAME" DataValueField="ID" runat="server" />

SQL数据源

     <asp:ObjectDataSource ID="sqlDataSourceItem" TypeName="Item" runat="server"
      SelectMethod="getItem"
      InsertMethod="insertItem"
      UpdateMethod="updateItem">
     <SelectParameters>
        <asp:QueryStringParameter QueryStringField="id" Name="id" />
     </SelectParameters>
     <InsertParameters>
        <asp:ControlParameter ControlID="ddlCategory" Name="categoryId" PropertyName="selectedValue" />
     </InsertParameters>
     </asp:ObjectDataSource>

我找到了解决这个问题的方法。我在控制参数中更改了DDL的ID。它的工作原理如下,因为这是该控件的最终生成ID。但我认为必须有一种更简单,更好的方法。任何帮助都会得到满足。

    <asp:ControlParameter ControlID="ctl00$main$frmViewItem$ddlCategory" Name="categoryId" PropertyName="selectedValue" />

2 个答案:

答案 0 :(得分:0)

这是因为您的ddlCategory位于formview中,并且您正在使用母版页。最好的方法是覆盖母版页的'FindControl'功能。 请参阅以下链接了解详细信息:

http://geekswithblogs.net/AzamSharp/archive/2006/08/27/89475.aspx

答案 1 :(得分:0)

This answer将为您的问题提供解决方案:

您需要递归findcontrol()方法。