4

我是 asp.net 的新手,我在使用 formview 中的下拉列表控件并将其值传递给相关的 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" />
4

2 回答 2

0

这是因为您的 ddlCategory 在 formview 内,并且您正在使用母版页。最好的方法是覆盖母版页的“FindControl”功能。详情请查看以下链接:

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

于 2012-12-26T16:34:36.973 回答
0

此答案将为您的问题提供解决方案:

你需要一个递归findcontrol()方法。

于 2012-12-26T17:22:50.007 回答