web开发,asp.net1.1中如何取得treeview控件中前当选择的节点的值.因为我要使用该值做其它查询条件
这样取出来为什么是空的
string str=tvChange.SelectedNodeIndex.ToString();
str值一直都为零,不会随选择不同节点而变化

解决方案 »

  1.   

    没有这个属性啊.SelectedValue private void tvChange_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
    {
    string str=tvChange.SelectedNodeIndex.ToString(); }
    我要在SelectedIndexChange这个事件中得到tvChange这个树形控件当前选择节点的值.
      

  2.   

    Node ne = tvChange.Nodes[tvChange.SelectedNodeIndex]
    Node有Text和nodedata属性等,你看你需要什么属性了
      

  3.   

    jamzh(原以为懂了,才发现
    Node ne = tvChange.Nodes[tvChange.SelectedNodeIndex]
    我使用的是c#,这里面都不能这样写啊.能不能详细点.
      

  4.   

    兄弟们,小弟是位生手,不知道是否要使用到javascript,这个我不熟,再跟大家说一下我的开发环境1  开发web 程序,非winform的
    2  使用asp.net1.1,c#刚才楼上的说的我都做了,都不行.this.TreeView1.SelectedNode.Value; 根本没有SelectedNode这个属性
      

  5.   

    小弟之前一直在做vb ,现在在转.net 发现比较困难,昨天女朋友遇到问题了,问我,我也赶鸭子上架,想把问题解决,她们经理催得紧,所以来麻烦大家了.问题解决完马上给分.
      

  6.   

    for (int i = 0; i < TreeView1.Nodes.Count; i++)
            {
                if (TreeView1.Nodes[i].Checked == true)
                {
                    TreeView1.Nodes[i].Value
                }
            }
    这个试试
      

  7.   

    我没有设成check的格式,不设成check的格式不行吗??因为我不想那么做,根本也不用选择的,只要点击相应的节点,我只要取出该节点的值就行了.
      

  8.   

    try:
    private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
    {
    string str = TreeView1.SelectedNodeIndex.ToString();
    string[] arIndex = str.Split('.');
    int index = int.Parse(arIndex[0].Trim());
    TreeNode tn = TreeView1.Nodes[index];
    for (int i = 1;i < arIndex.Length;i++)
    {
    index = int.Parse(arIndex[i].Trim());
    tn = tn.Nodes[index];
    }
    Response.Write(str + "<br>");
    Response.Write(tn.Text);
    }
      

  9.   

    如果不用check,你试试楼上的,我看差不多的
      

  10.   

    TreeNode ne = TreeView1.SelectedNode;
    ne.value或者ne.text
      

  11.   

    to : yan63(silence like a cancer grows) 关键是string str = TreeView1.SelectedNodeIndex.ToString();取出来的一直都是"0",所以你给我的方法也不行啊,是不是TreeView1在添加节点的时候我少加了什么,能否给一个能运行的例子来看看.谢谢
      

  12.   

    to :jamzh(原以为懂了,才发现...) 没有这个属性啊.SelectedNode,谢谢
      

  13.   

    我测试过了输出正常
    ---------------------------
    0.0
    Node7 或者使用e.NewNode同样是当前节点的索引
      

  14.   

    aspx:
    <iewc:TreeView id="TreeView1" runat="server" AutoPostBack="True">
    <iewc:TreeNode Text="Node0">
    <iewc:TreeNode Text="Node7"></iewc:TreeNode>
    </iewc:TreeNode>
    <iewc:TreeNode Text="Node1"></iewc:TreeNode>
    <iewc:TreeNode Text="Node2"></iewc:TreeNode>
    <iewc:TreeNode Text="Node3"></iewc:TreeNode>
    <iewc:TreeNode Text="Node4"></iewc:TreeNode>
    <iewc:TreeNode Text="Node5"></iewc:TreeNode>
    <iewc:TreeNode Text="Node6"></iewc:TreeNode>
    </iewc:TreeView>
      

  15.   

    to:yan63(silence like a cancer grows) 
    能否把你的例子贴出来给我运行一下,我把你的代码拷进去测试,输出一直都是"0",不知道是不是我哪里少加了什么东西啊.
      

  16.   

    我使用e.NewNode也试过,可以得出不同的值,但就是一些"0.0.1","0.1.0","1.0.0"之类的,因为我总共有三级节点,我要在点第三级节点的时候得到该节点相应的值.是否我哪里设错了?
      

  17.   

    webform2.aspx:
    ---------------------
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="WebTestApp.WebForm2" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <iewc:TreeView id="TreeView1" runat="server" AutoPostBack="True">
    <iewc:TreeNode Text="Node0">
    <iewc:TreeNode Text="Node7"></iewc:TreeNode>
    </iewc:TreeNode>
    <iewc:TreeNode Text="Node1"></iewc:TreeNode>
    <iewc:TreeNode Text="Node2"></iewc:TreeNode>
    <iewc:TreeNode Text="Node3"></iewc:TreeNode>
    <iewc:TreeNode Text="Node4"></iewc:TreeNode>
    <iewc:TreeNode Text="Node5"></iewc:TreeNode>
    <iewc:TreeNode Text="Node6"></iewc:TreeNode>
    </iewc:TreeView>
    </form>
    </body>
    </HTML>
    ---------------------
    webform2.aspx.csusing System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Microsoft.Web.UI.WebControls;namespace WebTestApp
    {
    /// <summary>
    /// WebForm2 的摘要说明。
    /// </summary>
    public class WebForm2 : System.Web.UI.Page
    {
    protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.TreeView1.SelectedIndexChange += new Microsoft.Web.UI.WebControls.SelectEventHandler(this.TreeView1_SelectedIndexChange);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
    {
    string str = TreeView1.SelectedNodeIndex.ToString();
    string[] arIndex = str.Split('.');
    int index = int.Parse(arIndex[0].Trim());
    TreeNode tn = TreeView1.Nodes[index];
    for (int i = 1;i < arIndex.Length;i++)
    {
    index = int.Parse(arIndex[i].Trim());
    tn = tn.Nodes[index];
    }
    Response.Write(str + "<br>");
    // Response.Write(e.NewNode + "<br>");
    Response.Write(tn.Text); }
    }
    }
      

  18.   

    to:yan63(silence like a cancer grows) 你的这个程序确实可以运行,我也测了,正常的,但问题就是我的节点中显示的是一个值,我并不是使用这个显示的值来做查询,而是该节点一个隐藏值,该如何做?还有,为什么我这里为什么一直是"0",而你的程序是正常的.谢谢
      

  19.   

    而是该节点一个隐藏值,该如何做
    ------------------
    在构造树的时候,将隐藏值写在treenode.nodedata属性中为什么我这里为什么一直是"0",
    -----------------------------
    是否把构造树的代码直接放在pageload中?试试写在!Ispostback块中
      

  20.   

    treeNode ne = tvChange.Nodes[tvChange.SelectedNodeIndex]
    ne有Text和nodedata属性等,你看你需要什么属性了,这里的应该是对的啊?你得不到这个treeNode ??
      

  21.   

    to: yan63(silence like a cancer grows) 为什么我这里为什么一直是"0",
    -----------------------------
    是否把构造树的代码直接放在pageload中?试试写在!Ispostback块中以上部分按你说的已经能显示出来了,但
    而是该节点一个隐藏值,该如何做
    ------------------
    在构造树的时候,将隐藏值写在treenode.nodedata属性中
    我是放在nodedata中的啊,但如何取出呢??以下是代码
    public  void CreateChildNode(TreeNode parentnode,DataTable dataTable)
    {
    DataRow[]  rowList=dataTable.Select("SubitemName='" + parentnode.NodeData + "'");
    foreach(DataRow row in rowList)
    {
    string strstate;
    if(row["State"].ToString()=="1")
    {
    strstate="完成";
    }
    else
    {
    strstate="处理中";
    }
    TreeNode tempnode=new TreeNode();
    tempnode.Text=row["UnitName"].ToString()+row["RecieveDate"].ToString()+row["DealTime"].ToString()+"("+strstate+")";
    tempnode.NodeData=row["UnitName"].ToString();
    tempnode.Expanded=false;
    // tempnode.NavigateUrl=row["UnitName"].ToString();
    tempnode.Target="MainFrame";
    parentnode.Nodes.Add(tempnode); CreateChildNode(tempnode,dataTable); }
    }
      

  22.   

    to:jamzh(原以为懂了,才发现...) 
    根本都不能这样写
    TreeNode ne = tvChange.Nodes[tvChange.SelectedNodeIndex];编译都不能通过
      

  23.   

    CreateChildNode函数没有问题,只要在ispostback中运行就可以了
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!IsPostBack)
    {
       CreateChildNode(parentnode,datatable);
    }
    }
    但如何取出呢??
    ------------------------ private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
    {
    string str = TreeView1.SelectedNodeIndex.ToString();
    string[] arIndex = str.Split('.');
    int index = int.Parse(arIndex[0].Trim());
    TreeNode tn = TreeView1.Nodes[index];
    for (int i = 1;i < arIndex.Length;i++)
    {
    index = int.Parse(arIndex[i].Trim());
    tn = tn.Nodes[index];
    }
    Response.Write(str + "<br>");
    // Response.Write(tn.Text + "<br>");
    Response.Write(tn.NodeData); }
      

  24.   

    to:yan63(silence like a cancer grows) 
    可以得到我要的值了,谢谢,先把这个忙完,今天之内结贴.方便留个QQ吗?你真是个热心人,谢谢