1

このイベント ハンドラでパラメータを渡す必要があります。イベント ハンドラでパラメータを送信することは可能ですか? 私のRadTreeView2_NodeExpand構文を確認してください。

internal void LoadTree(RadTreeView treeView, System.Collections.IEnumerable r)
{
   LoadRootNodes(ref treeView, TreeNodeExpandMode.ServerSideCallBack, r);
   treeView += RadTreeView2_NodeExpand(r);
}

public void RadTreeView2_NodeExpand(object sender, RadTreeNodeEventArgs e, System.Collections.IEnumerable r)
{                        
   if (e.Node.Nodes.Count == 0)
      PopulateNodeOnDemand(e, TreeNodeExpandMode.ServerSide, r);
}

private static void PopulateNodeOnDemand(RadTreeNodeEventArgs e, TreeNodeExpandMode expandMode, System.Collections.IEnumerable r)
{
   //List<testTable> data = GetChildNodes(e.Node.Value);

   foreach (testTable row in r)
   {
      RadTreeNode node = new RadTreeNode();
      node.Text = row.Address;//row["Title"].ToString();
      node.Value = row.ID; //row["CategoryId"].ToString();
      //if (Convert.ToInt32(row["ChildrenCount"]) > 0)
      //{
      //    node.ExpandMode = expandMode;
      //}
      e.Node.Nodes.Add(node);
   }

   e.Node.Expanded = true;
}       

private static void LoadRootNodes(ref RadTreeView treeView, TreeNodeExpandMode expandMode, System.Collections.IEnumerable data)
{
    //DataTable data = GetData(new SqlCommand("SELECT * FROM ProductCategories WHERE ParentId IS NULL"));

    foreach (testTable row in data)
    {
       RadTreeNode node = new RadTreeNode();
       node.Text = row.Address;//row["Title"].ToString();
       node.Value = row.ID;//row["CategoryId"].ToString();
       node.ExpandMode = expandMode;
       treeView.Nodes.Add(node);
    }
 }

ご不明な点がございましたら、お問い合わせください。あらゆる種類の提案を受け付けます。

4

3 に答える 3

2

いいえ、既存のイベントにパラメーターを追加することはできません。可能であれば、どのように値を渡しますか?

特定のTreeNoderow.IDの情報を取得するには、これが正しい方法です。そのため、データを別の場所に保存し、RowId でアクセスできるようにする方法を見つけてください。

于 2013-03-18T08:38:14.763 に答える
1

たぶん、あなたはこのようなことを試すことができます。ただし、Enumerable はイベント バインディングにバインドされることに注意してください。

internal void LoadTree(RadTreeView treeView, System.Collections.IEnumerable r)
    {
        var enumerable = r as object[] ?? r.Cast<object>().ToArray();
        LoadRootNodes(ref treeView, TreeNodeExpandMode.ServerSideCallBack, enumerable);
        treeView.NodeExpand += (s, e) =>
            {
             if (e.Node.Nodes.Count == 0)
               PopulateNodeOnDemand(e, 
                                    TreeNodeExpandMode.ServerSide,
                                    enumerable)
            };
    }
于 2013-03-18T09:25:15.000 に答える
-1
private void setup(string someData)
{
     Object.assignHandler((sender) => evHandler(sender,someData));
}
public void evHandler(Object sender, string someData)
{
    // need someData here!!!
}
于 2013-03-18T08:31:22.970 に答える