0

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

4

2 回答 2

0

请在选择 sqldatasource 时在您的代码隐藏页面中添加控制参数。您必须先进行控制,然后添加参数值。我假设名为 mypanel 的面板内的文本框 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
于 2011-08-01T18:48:04.833 回答
0

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

否则使用以下方法

FindControl("MyControlID")
于 2011-08-17T20:22:35.043 回答