我能够将数据表列绑定到Gridview
在这里,我从数据表中的列中选择Distinct Values并将它们插入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,因此我需要避免迭代。
你能帮帮我吗?
答案 0 :(得分:1)
TreeView(也不是ListView)不能直接绑定到DataSource。
由于@IamStalker表示注释,内部WinForms绑定控制机制中存在迭代:迭代数据以填充TreeView没有任何问题。
如果主要关注的是性能,那么您应该确保使用.BeginUpdate
()和.EndUpdate()
方法附加添加节点的代码:它将在填充操作期间锁定TreeView显示刷新。这仅适用于WinForms TreeView
要只进行一次迭代,您应该更改LINQ,如下所示(将var替换为string []并删除.ToArray())。因此LINQ语句将返回LINQ IEnumerable<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();