我的窗口左边是动态生成的treeview树形结构,右侧是一个GridView,请问如何点击treeview的节点文字在GridView显示相应的数据,关键是在treeview的哪个事件中写,还有点击后如何获取选择的ID和PARENTID,我用的是VS2008,谢谢

解决方案 »

  1.   

    treeView_NodeMouseClick 
    e.Node就是点击的节点,你可以根据他的Name或Text值判断对应的GridView数据
      

  2.   

    动态生成树时,把id和绑定到treeview的Tag属性里,然后在树的MouseUp事件里写代码
     private void treeView1_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    TreeNode node = treeView1.SelectedNode;
                    if (node != null)
                    {
                        string id = node.Tag.ToString();                  //ID
                        if (node.Parent != null)
                        {
                            string parentid = node.Parent.Tag.ToString(); //ParentID
                            //GridView根据id和parentid显示相应的数据
                        }
                    }
                }
            }
      

  3.   

    可是在我的treeView事件中找不到treeView_NodeMouseClick事件
      

  4.   

    AfterSelect 就行,
    void Tree_AfterSelect(object sender, TreeViewEventArgs e)ID获取:e.Node.Index
    PARENTID: e.Node.Parent.Index
    此外还有:e.Node.Level来判断当前选择的是第几级的节点至于点击treeview的节点文字在GridView显示相应的数据,直接根据e.Node.Text来判断吧~~
      

  5.   

    treeView_NodeMouseClick  
    e.Node就是点击的节点,你可以根据他的Name或Text值判断对应的GridView数据
      

  6.   

    treeView_NodeMouseClick  
    e.Node就是点击的节点,你可以根据他的Name或Text值判断对应的GridView数据
      

  7.   

    treeView_NodeMouseClick  
    e.Node就是点击的节点,你可以根据他的Name或Text值判断对应的GridView数据
      

  8.   

    是webform???用那个SelectedNodeChanged事件应该可以的
      

  9.   

    是的,可以我在 中写了语句,测试时也没反映
       protected void TV_SelectedNodeChanged(object sender, EventArgs e)
        {
            Label1.Text = "12341234";
        }
      

  10.   

    webform 中的treeview,有高手解答吗?我在SelectedNodeChanged事件中写了,确实没反映不知是什么原因? 我的treeview是放在UpdatePanel里的
      

  11.   

    treeView_NodeMouseClick  事件e.node 是选择的节点 
      

  12.   

    我是webform 
    现在我发现调试跟踪时edt_1.Text 是有值的
        protected void TV_SelectedNodeChanged(object sender, EventArgs e)
        {
         this.edt_1.Text =TV.SelectedNode.Text;
        }
    可以运行完成后,页面上的edt_1.Text还是空的,不知是什么原因
      

  13.   

    treeview  加了UpdatePanel   不doPostBack后台了。。 。
      

  14.   

    Ghost_Khz说的很对,可是我现在想treeview 放在UpdatePanel里,又想实现我上面的功能,有什么办法能解决吗?谢谢
      

  15.   

    把treeview的postback 设置为true
      

  16.   

    可是我在webform  的TREEVIEW中没有找到postback 属性
      

  17.   

    private void tv_monitor_AfterSelect(object sender, TreeViewEventArgs e)
            {
                SetSelectNode();
                string parmText = "";
                bool tabisvisible = false;
                if (e.Node.Level == 0)//地市
                {
                    parmText = e.Node.Tag.ToString();
                }
                else if (e.Node.Level == 1)//类型
                {
                    parmText = e.Node.Tag.ToString();
                }
                else if (e.Node.Level == 2)//小区
                {
                    parmText = e.Node.Tag.ToString();
                    tabisvisible = e.Node.Parent.Text == "场馆" ? true : false;
                }
               FitDataGridView(parmText, tabisvisible);
            }
    给你一段代码吧 这个是用AfterSelect事件的,通过e.Node.Tag获得相应的ID,放到parmText中,FitDataGridView(parmText, tabisvisible)是填充DataGridView的函数。
      

  18.   


    我是webform 没有这个事件
      

  19.   

    好像也没有AfterSelect 事件
      

  20.   

    响应TreeView的SelectedNodeChanged事件可以达到目的,注意:TreeNode的SelectAction需要是Select或SelectExpand,并且TreeNode的NavigateUrl不能填内容,否则点击那个Node不会引发TreeView的SelectedNodeChanged事件。
      

  21.   

    一般大家的做法是这样的:生成树的时候,在new一个新节点,它的三个属性要利用,一个text,用于存放名称,一个name用于存放当前ID,还有个是Tag,你可以存放另外一些重要的东西,你甚至可以把实体直接放入,选中节点触发afterselect事件,要取得父ID很简单,当前节点的父节点的name就是了,至于treeview
     datagridview 还有实体类的互操作是很技巧,让他们联动起来,选中其中的某个,就可以让三个都对齐,可以使用反射来写个通用类希望对你有帮助。呵呵