TreeView选择的事件无法使用LINQ

时间:2017-03-14 07:01:12

标签: c# asp.net linq treeview

我在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仍然是空的。

1 个答案:

答案 0 :(得分:0)

你是否将它添加到treeview html标记?

OnSelectedNodeChanged="trvMenu_SelectedNodeChanged"

并更改此行

ParentNode.SelectAction = TreeNodeSelectAction.None;
childNode.SelectAction = TreeNodeSelectAction.None;

ParentNode.SelectAction = TreeNodeSelectAction.Select;
childNode.SelectAction = TreeNodeSelectAction.Select;
相关问题