TreeView选定的事件无需使用Linq在GridView中绑定TreeView所选项目



我使用entityframework中的linq绑定了树视图。树生成代码似乎下面

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

您是否将其添加到treeview html markup?

OnSelectedNodeChanged="trvMenu_SelectedNodeChanged"

和更改此行

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

to

ParentNode.SelectAction = TreeNodeSelectAction.Select;
childNode.SelectAction = TreeNodeSelectAction.Select;

最新更新