C#加javaScripts实现选中树节点后显示节点内容(微软TreeView)

假设我们有一棵树用来设置分类,在页面加载时把数据库中的树内容填充到树上,然后希望在点树节点时可以显示节点的信息,如节点名称,编号等等。如果使用服务器端代码可以通过选中节点的获得节点ID,然后从数据库中取出结果。这样做会导致树在点击时闪烁的很厉害,很不爽。如果我们节点的信息不是很多,比如只有三个节点ID,Name和Description。便可以采用客户端代码和服务器端代码结合的办法来实现。代码如下。

服务器端
private void Page_Load(object sender, System.EventArgs e)
  {
   lblmsg.Text="";
   if(!IsPostBack)
   {
    TreeView1.Attributes.Add("onclick","GetAttribute()");//添加可以获得节点内容的javaScript函数
                       //此函数在本页的Html代码中
    BindData();
   } 
  }

  private void BindData()
  {
   using (ORC orc=new ORC())
   {
    ds=orc.GetSQL("select TypeID,TypeName,Description,ParentID from medtblType","medtblType");
    if (orc.ErrMsg!="")
    {
     lblmsg.Text=orc.ErrMsg;
     //Response.Write(orc.ErrMsg);
     return;
    }
    dv=ds.Tables[0].DefaultView;
    TreeView1.Nodes.Clear();
    comclsbase mybas=new comclsbase();
    mybas.BuilderTree(TreeView1.Nodes,"",dv);          //调用建树的方法
   }

  }

//建树方法
public void BuilderTree(TreeNodeCollection tnc ,string parentID,DataView dv)
  {
   if (parentID=="")
   {
    dv.RowFilter= "ParentID is null";
   }
   else
   {
    dv.RowFilter= "ParentID="+"'"+parentID+"'";
   }
   foreach(DataRowView drv in  dv)
   {
    TreeNode tn=new TreeNode();
    tn.Expanded=true;
    tn.ID=drv.Row["TypeID"].ToString().Trim();
    tn.Text=drv.Row["TypeName"].ToString().Trim();
    tn.NodeData=drv.Row["Description"].ToString().Trim();
    tnc.Add(tn);
    BuilderTree(tn.Nodes,tn.ID,dv);
   }
  }


客户端
<script language="javascript">
   
   //获得TreeView中被点中的节点的信息
   function GetAttribute()
   {
    document.Form1.txtDescription.value='';
    document.Form1.txtTypeID.value=Trim(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("ID"));
    document.Form1.txtTypeName.value=Trim(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text"));
    document.Form1.txtDescription.value=Trim(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("NodeData"));
   }
</script>

转载于:https://www.cnblogs.com/renrenqq/archive/2004/05/20/10534.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值