Использование элемента управления раскрывающегося списка внутри формы
Я новичок в asp.net, и у меня есть проблема с использованием элемента управления dropdownlist внутри formview и передачи его значения в связанный sqldatasource. Когда я использую код ниже, я получаю следующее исключение
Сведения об исключении: System.InvalidOperationException: Не удалось найти элемент управления "ddlCategory" в ControlParameter "categoryId".
Раскрывающийся список внутри формы.
<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 в параметре управления. Это работает как показано ниже, так как это последний сгенерированный идентификатор этого элемента управления. Но я думаю, что должен быть более легкий и лучший способ. Любая помощь будет оценена.
<asp:ControlParameter ControlID="ctl00$main$frmViewItem$ddlCategory" Name="categoryId" PropertyName="selectedValue" />
2 ответа
Этот ответ предоставит решение вашей проблемы:
Вам нужен рекурсивный findcontrol()
метод.
Это потому, что ваша ddlCategory находится внутри формы, и вы используете главную страницу. Лучший способ - переписать функцию "FindControl" главной страницы. Пожалуйста, смотрите следующую ссылку для деталей:
http://geekswithblogs.net/AzamSharp/archive/2006/08/27/89475.aspx