日期:2014-01-29  浏览次数:20459 次


        在WEB的TreeView中可以使用CheckBox来设置TreeView的节点是否可以选中,是大家都知道的。我们在项目进程中也用到该方法,这里把具体实现的方法给出。希望大家有更好的方案提出。

        先制定节点选择的规则:

         子节点选中,自动添加父节点到记录中;父节点选中,但子节点未选中的,仅仅添加父节点。

实现的代码,C#代码页面如下:

###################################

using 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;
using IDAL;
using ClassI;
namespace MSTreeView
{
 /// <summary>
 /// WebForm1
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Label Label1;
  protected System.Web.UI.WebControls.Button Button1;
  protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
  protected System.Web.UI.WebControls.Button Button2;
  protected System.Web.UI.WebControls.DropDownList DropDownList1;
   
  private void Page_Load(object sender, System.EventArgs e)
  {
      if(!IsPostBack)
      {
    DataTable dt=new DataTable();
    dt=this.GetDataSource();
    Session["dt"]=dt;
    BoundTreeview(this.TreeView1.Nodes,0);
      }
  }
  
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Button2.Click += new System.EventHandler(this.Button2_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
  
  private DataTable GetDataSource()
  {
   DataTable dt=new DataTable("dt");
   dt.Columns.Add(new DataColumn("ID",typeof(System.Int32)));
   dt.Columns.Add(new DataColumn("PID",typeof(System.Int32)));
   dt.Columns.Add(new DataColumn("NUM",typeof(System.Int32)));
   dt.Columns.Add(new DataColumn("NAME",typeof(System.String)));
//   for (int i=0;i<=10;i++)
//   {
    DataRow dr;
    
   dr=dt.NewRow();
   dr["ID"]=1;
   dr["PID"]=0;
   dr["NUM"]=1;
   dr["NAME"]="1";
   dt.Rows.Add(dr);

   dr=dt.NewRow();
   dr["ID"]=2;
   dr["PID"]=1;
   dr["NUM"]=2;
   dr["NAME"]="2";
   dt.Rows.Add(dr);

   dr=dt.NewRow();
   dr["ID"]=3;