4

内部に Treeview コントロールを持つ Web ユーザー コントロールがあります。いくつかの他のコントロールと共に Gridview を含む別のユーザー コントロールを作成しました。

Gridview は、ユーザーが Treeview から別の TreeNode を選択するたびに更新する必要があります。
いくつかの検索の後、おそらく解決策は次のとおりです。

  • Treeview で選択されたノードが変更されたときに発生するイベントをユーザー コントロールから追加して発生させます。ノード値を含むカスタム イベント引数を作成すると、イベント ハンドラに直接渡すことができます。

もしそうなら、このアプローチを実装する基本的な実例を見せてもらえますか?
ありがとう。

4

1 に答える 1

3

メイン ページのコード ビハインドで Treeview コントロールからのカスタム イベントを処理できます。次に、イベント ハンドラーで、gridview コントロールのパブリック メソッドを呼び出します。

control1 がツリー コントロールで、control2 がグリッド コントロールの場合:

メイン ページ aspx (このページのメソッドに control1 イベント ハンドラーを設定):

<%@ Register Src="~/Controls/WebUserControl1.ascx" TagName="Control1" TagPrefix="ctrl" %>
<%@ Register Src="~/Controls/WebUserControl2.ascx" TagName="Control2" TagPrefix="ctrl" %>
<ctrl:Control1 ID="control1" runat="server" OnTreeNodeChanged="Control1_TreeNodeChanged" />
<ctrl:Control2 ID="control2" runat="server" />

メインページのコードビハインド:

    public void Control1_TreeNodeChanged(object sender, EventArgs e)
    {
        control2.ReloadGrid();
    }

ツリー制御コード

public event EventHandler TreeNodeChanged;

protected void FromYourTreeNodeEvent(object o, EventArgs e)
{
    //fire your custom event

    if (TreeNodeChanged!= null)
    {
        TreeNodeChanged(this, EventArgs.Empty);
    }            
}

グリッド制御コード

    public void ReloadGrid()
    {
        //do something
    }
于 2011-02-13T23:01:31.917 に答える