ASPXページのUserControlsからコントロールにアクセスする方法は? 例: ASPXページのusercontrolにあるgridviewにアクセスしたいとします。ASPXページのUserControlsからのアクセスコントロール
私を助けてください。
ASPXページのUserControlsからコントロールにアクセスする方法は? 例: ASPXページのusercontrolにあるgridviewにアクセスしたいとします。ASPXページのUserControlsからのアクセスコントロール
私を助けてください。
あなたがアクセスできるあなたのUserControl
にプロパティを提供することをお勧めします。例えば
:
public GridView UserGrid
{
get
{
return GridView1;
}
}
しかし、あなたがこれを必要とする理由の質問です。
親指の規則:可能な限り少なくしてください。そうすれば、あなたのコードは最も堅牢で読みやすいものになります。したがって、それを公開するのはではなくDataSource
です。
一方、UserControlのイベントでページを反応させる場合は、ページで処理できるカスタムイベント(例:UserDeleted)を提供する必要があります。
コントロールが同じレベルでお互いについて何も、あなたはそれを得るために親ページを使用する必要があるため。このロジックを試してみてください:
あなたの親ページを参照するプロパティを作成します(ページあなたのコントロールが通常である(なぜならコントロールのレイヤーの異なる場合があります)
を参照するページのプロパティを作成します。グリッドがでているユーザーコントロール、または直接そのグリッドへのリンク。
page.aspx
public UserControl UserGridControl
{
get;
set;
}
userControl.ascx
public Page ParentPage
{
get;
set;
}
例コール:
は、最初のプロパティをインスタンス化。その後、次の文を使用してそのコントロールから何かにアクセスします(ここではFoo()を使ってダミーメソッドとして使用していますが、誰かにとっては不明瞭です)。
this.ParentPage.UserGridControl.Foo();
EDIT:それは、ページのみから行うことができるように直接コード例を持っていたいですか? Tim Schmeltersの答えを参照してください。別のユーザーコントロールからグリッドを呼び出す方法が必要な場合。私のものを使用してください。 WebUserControl1が.aspxのページ上で使用するコントロールのIDである
GridView GridView1 = (GridView)WebUserControl1.FindControl("GridView1");
:
'Foo'とは何ですか?それはどこにも宣言されていない。あなたの 'ParentPage'プロパティの目的もわかりません。 OPは、このページ内のASPXページにあるUserControlのGridViewにアクセスする方法を尋ねました。だから冗長です。 –
あなたは本当にもっと広い答えを批判していますか?私はOPだけでなく、別のユーザーコントロールからロードする余分な方法を与えた...それはとても悪いですか? – Rickjaah
私はあなたの答えを捨てていませんが(部品は私のものからコピーされているようですが)、回答は_bad_ではありませんが、何も追加せず、OPの要件を参照していません。 –
はこれを試してみてください。
@downvoter:お気軽にコメントしますか? –