ASP.net 自制TableTree实现

 

 

using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace UserControl.UI
{
 /// <summary>
 /// TreesTable 的摘要说明。
 /// </summary>
 public class TreesTable
 {
  public interface iTrees
  {
   void AddNode(Trees node);
   Control NodeItem{get;}
   Control Title{get;set;}
  }
      
  public class Trees:Control,iTrees
  {
   private Control m_TreeNodeCollect;
   private Control m_TitleControl;
   private string m_TextTitle;
   private HtmlTable m_HtmlTabe;
   private string m_script;
   private const string SCRIPT="<script language='javascript'>{0}</script>";
   
   public Trees()
   {
    m_TreeNodeCollect = new Control();
    m_HtmlTabe = new HtmlTable();
    //Java script
    m_script = string.Format(SCRIPT,
     "function ShowObject(showObjName){var showObj1=showObjName; if(showObj1.style.display=='none'){showObj1.style.display='block';}else{showObj1.style.display='none';}}");
   }
   
   public Trees(string title)
   {
    m_TreeNodeCollect = new Control();
    m_HtmlTabe = new HtmlTable();
    //Java script
    m_script = string.Format(SCRIPT,
     "function ShowObject(showObjName){var showObj1=showObjName; if(showObj1.style.display=='none'){showObj1.style.display='block';}else{showObj1.style.display='none';}}");
    TextTitle = title;
   }

   public Trees(Control title)
   {
    m_TreeNodeCollect = new Control();
    m_HtmlTabe = new HtmlTable();
    //Java script
    m_script = string.Format(SCRIPT,
     "function ShowObject(showObjName){var showObj1=showObjName; if(showObj1.style.display=='none'){showObj1.style.display='block';}else{showObj1.style.display='none';}}");
    Title = title;
   }
   
   private Control getTextControl(string string1)
   {
    Literal li = new Literal();
    li.Text = string1 + "";
    return li;
   }
   
   public string TextTitle
   {
    get { return m_TextTitle; }
    set
    {
     m_TextTitle = value;
     Title = getTextControl(value);
    }
   }
   
   protected override void CreateChildControls()
   {
    base.CreateChildControls();
    Page.RegisterStartupScript("ShowObject", m_script);
    Controls.Add(m_HtmlTabe);
    m_HtmlTabe.Rows.Add(getHtmlTable(Title));
    if(NodeItem.Controls.Count>0)
    {
     m_HtmlTabe.Rows.Add(getHtmlTable(NodeItem));
     m_HtmlTabe.Rows[0].Attributes["onclick"] =
      string.Format("ShowObject(document.getElementById('{0}'))", m_HtmlTabe.Rows[1].ClientID);
    }
   }

   private HtmlTableRow getHtmlTable(Control control)
   {
    HtmlTableRow tr;
    HtmlTableCell td;
    tr = new HtmlTableRow();
    td = new HtmlTableCell();
    td.Controls.Add(control);
    tr.Cells.Add(td);
    tr.ID = tr.ClientID;
    return tr;
   }
   
   #region iTrees 成员

   public void AddNode(Trees node)
   {
    NodeItem.Controls.Add(node);
   }

   public Control NodeItem
   {
    get
    {
     return m_TreeNodeCollect;
    }
   }

   public Control Title
   {
    get { return m_TitleControl; }
    set { m_TitleControl = value; }
   }

   #endregion
  }

 }
}

你可能感兴趣的:(ASP.net 自制TableTree实现)