找不到控制参数

时间:2011-08-01 18:04:09

标签: asp.net controls find controlparameter

错误:无法在ControlParameter'mycontrolparam'中找到控件'mytextfield'。

<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'是一个只读文本字段。它在其他页面上确实可以正常工作。

2 个答案:

答案 0 :(得分:0)

当sqldatasource选择时,请在代码隐藏页面中添加控制参数。您必须首先转换控件然后添加参数值。我假设在名为mypanel的面板内的textbox xyz控件。

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

答案 1 :(得分:0)

我自己:如果控件嵌入在面板中,则只能通过该面板的FindControl方法找到它。它实际上对我不起作用,我不得不放弃它并使用不同的方法。

否则使用以下方法

FindControl("MyControlID")