我在entityframework中使用LINQ绑定了一个TreeView。树生成代码如下所示
protected void GenerateTree()
{
trvMenu.Nodes.Clear();
ReportColumnDefinationDA reportColumnDa = new ReportColumnDefinationDA(true);
List<RB_Report_Column_Defination> listMenu = reportColumnDa.GetAllDefination().OrderBy(x => x.RB_ReportType.Name).ToList();
if (listMenu != null && listMenu.Count > 0)
{
try
{
foreach (RB_Report_Column_Defination firstLevelItem in listMenu.GroupBy(i => i.Report_type).Select(g => g.First()))
{
TreeNode ParentNode = new TreeNode();
ParentNode.Text = firstLevelItem.RB_ReportType.Name;
ParentNode.Value = firstLevelItem.Report_type.ToString();
ParentNode.ShowCheckBox = false;
ParentNode.SelectAction = TreeNodeSelectAction.None;
trvMenu.Nodes.Add(ParentNode);
// Add Child Node
foreach (RB_Report_Column_Defination secondLevelItem in listMenu.Where(X => X.Report_type == firstLevelItem.Report_type))
{
TreeNode childNode = new TreeNode();
childNode.Text = secondLevelItem.Column_Name;
childNode.Value = secondLevelItem.Id.ToString();
childNode.SelectAction = TreeNodeSelectAction.None;
Session["val"]=secondLevelItem.Id.ToString();
ParentNode.ChildNodes.Add(childNode);
}
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
}
现在我想在网格视图中绑定选定/选中的节点,所以我使用了
trvMenu_SelectedNodeChanged
将选定节点数据绑定到网格视图并且代码为
的事件 protected void trvMenu_SelectedNodeChanged(object sender, EventArgs e)
{
int id = Convert.ToInt32(Session["val"]);
ReportColumnDefinationDA reportDa = new ReportColumnDefinationDA(true);
List<RB_Report_Column_Defination> definatons = new List<RB_Report_Column_Defination>();
definatons = reportDa.GetAllDefinationListByID(id);
gridRptDefination.DataSource = definatons;
gridRptDefination.DataBind();
}
但代码无效,我的代码出了什么问题?我也试过了另一个事件
trvMenu_TreeNodeCheckChanged
但仍然不能正常工作,gridview仍然是空的。
答案 0 :(得分:0)
你是否将它添加到treeview html标记?
OnSelectedNodeChanged="trvMenu_SelectedNodeChanged"
并更改此行
ParentNode.SelectAction = TreeNodeSelectAction.None;
childNode.SelectAction = TreeNodeSelectAction.None;
到
ParentNode.SelectAction = TreeNodeSelectAction.Select;
childNode.SelectAction = TreeNodeSelectAction.Select;