2

我能够将数据表列绑定到 Gridview

在这里,我从数据表中的列中选择不同的值并将它们插入到 TreeView。

string[] menuGroup = ((from DataRow row1 in _ds.Tables["Rest_grdvitems"].Rows
                       orderby row1["Menu_Group"]
                   select row1["Menu_Group"].ToString()).Distinct()).ToArray();

           TreeNode node = new TreeNode("All Items");
           TV_Categories_List.Nodes.Add(node);
           foreach (string menuitem in menuGroup)
           {
               TreeNode node1 = new TreeNode(menuitem);
               TV_Categories_List.Nodes.Add(node1);
           }

因为我没有大量的行要插入到 TreeView,所以我需要避免迭代。

你能帮我吗??

4

1 回答 1

1

TreeView(也不是 ListView)不能直接绑定到 DataSource。

正如@IamStalker 作为评论所说,内部 WinForms 绑定控制机制中有迭代:迭代数据以填充 TreeView 没有任何问题。

如果您主要关心的是性能,那么您应该确保将添加节点的代码包含在.BeginUpdate() 和.EndUpdate()方法中:它将在填充操作期间锁定 TreeView 显示刷新。这仅适用于 WinForms TreeView

要只进行一次迭代,您应该如下更改 LINQ(放置 var 而不是 string[] 并删除 .ToArray())。因此 LINQ 语句将返回 LINQIEnumerable<string>而不是 string[]。这样,它只会在填充 TreeView 的 foreach 循环中被枚举。

var menuGroup = (from DataRow row1 in _ds.Tables["Rest_grdvitems"].Rows
                orderby row1["Menu_Group"]
                select row1["Menu_Group"].ToString()).Distinct();

TreeNode node = new TreeNode("All Items");

TV_Categories_List.BeginUpdate();

TV_Categories_List.Nodes.Add(node);
foreach (string menuitem in menuGroup)
{
    TreeNode node1 = new TreeNode(menuitem);
    TV_Categories_List.Nodes.Add(node1);
}

TV_Categories_List.EndUpdate();
于 2013-02-26T06:42:13.113 回答