C#加javaScripts實現選中樹節點後顯示節點內容(微軟TreeView)

來源:互聯網
上載者:User

假設我們有一棵樹用來設定分類,在頁面載入時把資料庫中的樹內容填充到樹上,然後希望在點樹節點時可以顯示節點的資訊,如節點名稱,編號等等。如果使用伺服器端代碼可以通過選中節點的獲得節點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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.