0

エラー: ControlParameter 'mycontrolparam' にコントロール 'mytextfield' が見つかりませんでした。

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

エラーは、「mytextfield」がパネル コントロール内にあり、それを見つけるには FindControl メソッドが必要であるためです。しかし、mytextfield を制御パラメーターに表示する方法があれば、簡単な解決策を見つけたいと思います。同じコードは別のページでは機能しますが、このページでは機能しません。既存のコードに最小限の変更を加えたいと思います。

これは、マイクロソフトのサイトからコピーした同様のコードです。

<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

私自身: コントロールがパネル内に埋め込まれている場合、そのパネルの FindControl メソッドを介してのみ見つけることができます。それでも実際にはうまくいかず、それを放棄して別の方法を使用する必要がありました.

それ以外の場合は、次の方法を使用してください

FindControl("MyControlID")
于 2011-08-17T20:22:35.043 に答える
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 に答える