一 Linq綁定TreeView
1.綁定
private void AddTreeView()
{
var data = GetParentData();
if (data.Any())
{
foreach (var d in data)
{
TreeNode node = new TreeNode();
node.Text = d.M_Name;
node.Value = d.M_ID.ToString();
this.tvMenu.Nodes.Add(node);
AddChildTreeView(node, d.M_ID);
}
}
}
public void AddChildTreeView(TreeNode tn, int ? parentid)
{
var source = GetChildData(parentid);
if (source.Any())
{
foreach (var s in source)
{
TreeNode cnode = new TreeNode();
cnode.Text = s.M_Name;
cnode.Value = s.M_ID.ToString();
tn.ChildNodes.Add(cnode); //WinForm 這樣寫 tn.Nodes.Add(cnode);
AddChildTreeView(cnode, s.M_ID);
}
}
}
public IQueryable<Module> GetParentData()
{
lq = new LQDataContext();
var data = from d in lq.Modules
where d.M_FID == 0
select d;
return data;
}
public IQueryable<Module> GetChildData(int? parentid)
{
lq = new LQDataContext();
var child = from c in lq.Modules
where c.M_FID == parentid
select c;
return child;
}
2 數據庫結構
CREATE TABLE Module
(
M_ID INT IDENTITY(1,1) PRIMARY KEY,
M_Name NVARCHAR(20),
M_Url NVARCHAR(100),
M_FID INT ,
M_OrderNo int
)
GO