3

テキスト ボックス コントロール (txtid) を持つ aspx ページ (example.aspx) があり、同じページに画像ボタン (click.png) を持つユーザー コントロール (access.ascx) を作成しています。テキスト ボックス (txtid) をユーザー コントロールに取得する必要があります。テキスト ボックス コントロール (txtid) の値をユーザー コントロール ページ (access.ascx) に取得するにはどうすればよいですか?

4

4 に答える 4

3

次のようなものを試してください:

TextBox txt= (TextBox)this.Parent.FindControl("txtid");

それはあなたのユーザーコントロールに入ります。this.Parent は、example.aspx ページへの参照を取得する必要があります。

于 2013-04-26T12:54:46.913 に答える
2

ユーザー コントロールでは、次のようなプロパティを追加できます。

public property Text
{
  ..
}

次に、ページはページのテキストボックスからこのプロパティに値を割り当てることができ、ユーザーコントロールが使用できるようになります。メソッドを使用することもできSetText(string text)ます。

于 2013-04-26T12:54:25.993 に答える
1

ユーザー コントロール内:

TextBox textBox = (TextBox)this.FindSiblingControl("txtid");

サポート方法:

public static class StaticClassToHandleExtensions
{
    public static Control FindSiblingControl(this Control control, string id)
    {
        Control parent = control.Parent;
        while (parent.GetType() != typeof(ContentPlaceHolder) && parent.GetType() != typeof(Page))
            parent = parent.Parent;

        return parent.FindControl(id);
    }
}

最初のレベルParentはコントロールと同じレベルにない可能性があるため、さらに上に行く必要があります。この例でContentPlaceHolderは、ページのトップ レベルになるストップがあり、マスター ページのPageないページのトップ レベルになるマスター ページがあります。このFindControlメソッドは、コントロールのツリー全体を検索します。つまり、複数のレベルを深く検索するため、これが最も安全で簡単なソリューションです。

于 2013-04-26T13:05:28.337 に答える
1

これを試して

TextBox txt1 = (TextBox)this.Parent.FindControl("txtid")
于 2013-04-26T12:54:38.697 に答える