我是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" />
答案 0 :(得分:0)
这是因为您的ddlCategory位于formview中,并且您正在使用母版页。最好的方法是覆盖母版页的'FindControl'功能。 请参阅以下链接了解详细信息:
http://geekswithblogs.net/AzamSharp/archive/2006/08/27/89475.aspx
答案 1 :(得分:0)
This answer将为您的问题提供解决方案:
您需要递归findcontrol()
方法。