5

ユーザーコントロールからページコントロールにアクセスする方法はありますか?ページにいくつかのコントロールがあり、ユーザーコントロールからこれらのコントロールにアクセスしたいと思います。

4

4 に答える 4

15
YourControlType ltMetaTags = null;
Control ctl = this.Parent;
while (true)
{
    ltMetaTags = (ControlType)ctl.FindControl("ControlName");
    if (ltMetaTags == null)
    {
        ctl = ctl.Parent;
        if(ctl.Parent == null)
        {
            return;
        }
        continue;
    }
    break;
}

System.Web.UI.WebControls.Literal ltMetaTags = null;
Control ctl = this.Parent;
while (true)
{
    ltMetaTags = (System.Web.UI.WebControls.Literal)ctl.FindControl("ltMetaTags");
    if (ltMetaTags == null)
    {
        if(ctl.Parent == null)
        {
            return;
        }
        ctl = ctl.Parent;
        continue;
    }
    break;
}
于 2012-04-09T11:10:32.430 に答える
11

これを実現するには、実際にはいくつかの方法があります。

ユーザーコントロールにパブリックプロパティを作成する

public Button PageButton { get; set; }

次に、ページのOnInitまたはOnLoadメソッドで割り当てます

myUserControl.PageButton = myPageButton;

コントロールを公開して、ページのボックスを解除できます。

public Button PageButton { get { return this.myPageButton; } }

ユーザーコントロール:

MyPage myPage = (MyPage)this.Page;
myPage.PageButton.Text = "Hello";

最も遅いが最も簡単な方法は、FindControlを使用することです。

this.Page.FindControl("myPageButton");
于 2012-04-07T10:25:47.393 に答える
2
    Parent.FindControl("hdnValue")
于 2012-04-07T10:15:40.947 に答える
1

私のためのその仕事:

マイ.aspxページでラベルを宣言します

  <asp:Label ID="lblpage" runat="server" Text="this is my page"></asp:Label>
  <asp:Panel ID="pnlUC" runat="server"></asp:Panel>

.aspx.csUserControlを追加しましたPanel

   UserControl objControl = (UserControl)Page.LoadControl("~/ts1.ascx");
   pnlUC.Controls.Add(objControl);

.ascx次のようにUserControlからアクセスします。

 Page page = this.Page;
 Label lbl = page.FindControl("lblpage") as Label;
 string textval = lbl.Text;
于 2012-04-07T11:37:49.587 に答える