0

私が持っている場合:

<asp:TextBox ID="txtField1" runat="server"></asp:TextBox>

次に、コード ビハインドで、「ClientID」によってその Web コントロールにアクセスできます。

txtField1.Text = "value";

それは機能しますが、参照によって同じ Web コントロールにアクセスする別の方法が必要なので、次のようにしてみました。

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1);
myTxtField.Text = "value";

そして、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。私がこれを正しく行っているか、または文字列を渡して Web コントロールの ID を参照する別の方法があるかどうか、何か考えはありますか?

4

3 に答える 3

2
TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1);

コントロールがのContentPageにある場合、これはnullを返しますMasterPage。次に、それを直接参照する必要があります(以下を参照)。

私はここにこの問題について何かを書いています:https ://stackoverflow.com/a/8781131/284240

もちろん、コントロールに別のIDがある場合、またはコントロールがNamingContainerページ以外にある場合(GridViewのfe)もnullを返します。

サイドノート:

次に、コードビハインドで、「ClientID」によってそのWebコントロールにアクセスできます。

txtField1.Text = "value";

txtField1ではIDなく、ClientID実際にはコントロールを直接参照しています。

于 2012-08-28T19:59:45.847 に答える
0

何らかの理由で int: が気に入らないので、ToString() を呼び出します。

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + (1).ToString());
于 2012-08-28T20:06:28.760 に答える
0

これは有効なコードであり、機能する必要があります

TextBox myTxtField = (TextBox)Page.FindControl("txtField" + 1);
myTxtField.Text = "value";

asp:TextBoxエラーの理由は、IDを持っていない"txtField1"か、テキスト ボックス コントロールがページにない可能性があります。

于 2012-08-28T20:02:47.063 に答える