下面是我需要它的更好的解釋,我認爲是完成了大部分的部分,但我只是無法弄清楚在ViewMode。如果有人能幫助我,請賜教!Asp.net填充樹視圖linq到實體
我有一個關鍵字列表(概述),我想編輯/插入並查看與特定關鍵字相關的信息或插入一個新關鍵字。 關於此插入,編輯和查看的詳細關鍵字頁面,我必須顯示一個樹形視圖,類別和主題,父節點是類別和 兒童主題。用戶可以檢查任何這些主題(基於複選框的樹形視圖)以將選定的關鍵字與這些主題相關聯。 例如對於科學類我有主題數學,物理,地理,如果我想關鍵字幾何,我可以檢查樹視圖 數學。在查看模式下,我只需要顯示選定的主題和類別父項,但插入和編輯必須顯示所有主題並檢查主題。
我有這樣的實體和導航屬性和數據例如:
實體選項(OptionId,的ParentId,描述虛擬導航屬性KeyWordOptions) KeyWordOption(OptionId,KeywordID,虛擬導航屬性選項)
Option Entity
OptionId ParentID Description
1 0 Informatics
2 1 Development
3 0 Architecture
4 1 Systems
5 1 Hardware
6 3 Civil Engineering
7 1 Software
KeyWordOption Entity
OptionId KeywordID ID KeywordDescription
1 8 8 Visual Studio
2 8 2 Autocad
4 2 5 Monitor
5 5 9 Eclipse
2 9
7 8
7 2
7 9
Result Would be for Eclipse keyword(id = 9) at EditMode:
Informatics
Development (checked)
System
Hardware
Software (checked)
Architecture
Civil Engineering
結果將是在VIEWMODE Eclipse的關鍵字(ID = 9):
Informatics
Development (checked)
Software (checked)
我的代碼是:
BindTreeView(OptionList,null);
private void BindTreeView(IEnumerable<Opcion> OptionList, TreeNode parentNode)
{
var nodes = OptionList.Where(x => parentNode == null ? x.ParentID == 0 : x.ParentID == int.Parse(parentNode.Value));
if (mode != FormViewMode.View)
{
foreach (var node in nodes)
{
TreeNode newNode = new TreeNode();
newNode.Text = node.Description.ToString();
newNode.Value = node.OptionID.ToString();
if (parentNode == null)
{
TreeViewOptions.Nodes.Add(newNode);
}
else
{
if (node.KeyWordOptions.Where(c => c.KeywordID == _idKeyWord).Count() > 0)
{
newNode.Checked = true;
parentNode.Expand();
}
parentNode.ChildNodes.Add(newNode);
}
BindTreeView(OptionList, newNode);
}
}
else
{
foreach (var node in nodes)
{
TreeNode newNode = new TreeNode();
newNode.Text = node.Descripcion.ToString();
newNode.Value = node.OpcionID.ToString();
if (parentNode == null && node.KeyWordOptions.Where(c => c.KeywordID == _idKeyWord).Count() > 0)
{
TreeViewOptions.Nodes.Add(newNode);
}
else
{
if (node.KeyWordOptions.Where(c => c.KeywordID == _idKeyWord).Count() > 0)
{
newNode.Checked = true;
parentNode.Expand();
}
parentNode.ChildNodes.Add(newNode);
}
BindTreeView(OptionList, newNode);
}
}
}
}
我不知道我必須做排除Nodes
不匹配KeywordId
歡迎來到StackOverflow!你可以編輯你的問題,包括更多的信息,特別是你有什麼問題,你已經嘗試了什麼,以及爲什麼它不工作 - 這將幫助我們更好地理解你的問題。 – Justin