параметр управления не найден

Ошибка: не удалось найти элемент управления «mytextfield» в параметре ControlParameter «mycontrolparam».

<asp:ControlParameter ControlID="mytextfield" Name="mycontrolparam" PropertyName="Text" Type="Int32" />

Ошибка связана с тем, что «mytextfield» находится внутри элемента управления панели, и мне понадобится метод FindControl, чтобы найти его. Но я хочу найти быстрое решение, если оно есть, как сделать mytextfield видимым для параметра управления. Тот же код работает на другой странице, но не на этой. Пожалуйста, имейте в виду, я хочу внести минимум изменений в существующий код.

Вот аналогичный код, который я скопировал с сайта Microsoft.

<asp:SqlDataSource id="Employees" runat="server"
  ConnectionString="<%$ ConnectionStrings:Northwind%>"
  SelectCommand="SELECT LastName FROM Employees WHERE Title = @Title">
  <SelectParameters>
    <asp:ControlParameter Name="Title" 
      ControlID="DropDownList1"
      PropertyName="SelectedValue"/>
  </SelectParameters>
</asp:sqldatasource>

Хочу отметить: «mytextfield» - это текстовое поле только для чтения. Однако на другой странице все работает нормально.


person Hammad Khan    schedule 01.08.2011    source источник
comment
Существует решение со знаком $, но оно не работает на мастер-страницах.   -  person Hammad Khan    schedule 01.08.2011


Ответы (2)


Пожалуйста, добавьте параметр управления на страницу кода программной части при выборе sqldatasource. Сначала вам нужно будет передать управление, а затем добавить значение параметров. Я предположил, что управление текстовым полем xyz находится внутри панели с именем mypanel.

Protected Sub Employees_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles Employees.Selecting
            Dim xyz As TextBox = DirectCast(mypanel.findcontrol("yourcontrolname"), TextBox)
            Dim mycontrolparam = New SqlParameter("@mycontrolparam",xyz.text)
            e.Command.Parameters.Add(mycontrolparam)
        End Sub
person Mitul    schedule 01.08.2011
comment
Спасибо за ответ. Изучение forums.asp .net/t/940975.aspx/ прямо сейчас. Я могу преобразовать это в код С#, но прямо сейчас ищу решение в файле .aspx. - person Hammad Khan; 01.08.2011

Я: Если элемент управления встроен в панель, вы можете найти его только с помощью метода FindControl этой панели. На самом деле это все еще не сработало для меня, и мне пришлось отказаться от него и использовать другой метод.

В противном случае используйте следующий метод

FindControl("MyControlID")
person Hammad Khan    schedule 17.08.2011