1

DataTable を TreeView にバインドしたいです。次のコードを書きました。現在動作しています。つまり、DataTable のすべてのデータが表示されますが、ルート ノードは表示されません。

 List<DocumentData> lstData = GetSPDocuments();
    gvDocuments.DataSource = lstData;
    gvDocuments.DataBind();

    DataTable dt = ConvertToDataTable(lstData);

    TreeNode node1 = new TreeNode("Root");


    foreach (DataRow r in dt.Rows)
    {
        int nodeLvl = int.Parse(r["ID"].ToString());
        string nodeParent = "Folders";
        string nodeName = r["Title"].ToString();


        TreeNode tNode = new TreeNode(nodeName);

        ht.Add(nodeLvl.ToString() + nodeName, tNode);

        if (tvDocs.Nodes.Count == 0)
            tvDocs.Nodes.Add(tNode);
        else
        {
            nodeLvl--;
            tvDocs.Nodes.Add(tNode);               
        }
    }

ここに静的ルートノードを追加する方法??? 助けてください!

4

3 に答える 3

0
// Suppress repainting the TreeView until all the objects have been created.
treeView1.BeginUpdate();

// Clear the TreeView each time the method is called.
treeView1.Nodes.Clear();

// create root node
TreeNode root = new TreeNode("Root");

// loop and add all child nodes to root node
foreach (DataRow r in dt.Rows)
{
    // create child node 
    // add to root node 
     root.Nodes.Add(child);
}

// add root node to tree view
treeView1.Nodes.Add(root);

// Begin repainting the TreeView.
treeView1.EndUpdate();
于 2013-04-22T04:55:16.543 に答える
0

この答えを得たことはありますか?あなたはほとんどそこにいました。

TreeViewコントロールの名前は何ですか? あなたが決して言わなかったので、私は を使用してtreeView1おり、以下を含むようにコードを変更しました:

private TreeView treeView1;

private void TreeView_DataBind() {

  treeView1.Nodes.Clear();

  List<DocumentData> lstData = GetSPDocuments();
  gvDocuments.DataSource = lstData;
  gvDocuments.DataBind();

  DataTable dt = ConvertToDataTable(lstData);

  TreeNode node1 = new TreeNode("Root");

  treeView1.Nodes.Add(node1); // this is the step you missed

  foreach (DataRow r in dt.Rows)
  {
    int nodeLvl = int.Parse(r["ID"].ToString());
    string nodeParent = "Folders";
    string nodeName = r["Title"].ToString();

    TreeNode tNode = new TreeNode(nodeName);

    ht.Add(nodeLvl.ToString() + nodeName, tNode);

    if (tvDocs.Nodes.Count == 0)
      tvDocs.Nodes.Add(tNode);
    else
    {
      nodeLvl--;
      tvDocs.Nodes.Add(tNode);               
    }
  }

  node1.Expand();

}

簡単!

于 2013-10-21T19:59:14.700 に答える