一個自定義的可以分頁,排序,擴展顯示grid控件

第一次寫,忘記註解,對不住.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Xml;

namespace Grid
{

    public class IDArgs : System.EventArgs 
    {  
         private string id;
    
         //Constructor.
         //
         public IDArgs(string Id) 
         {
              this.id =Id;
              
         }
      
         // The NumRings property returns the number of rings
         // that the alarm clock has sounded when the alarm event 
         // is generated.
         //
         public string ID
         {     
              get { return this.id ;}   
         }     
  
    }

    /// 
    /// Summary description for WebCustomControl1.
    /// 
    [DefaultProperty("Text"),
    ToolboxData("<{0}:WebCustomControl1 runat=server>")]
    public class WebCustomControl1 : System.Web.UI.WebControls.WebControl, IPostBackEventHandler
    {

         public string EditUrl
         {
              get
              {
                   if(this.ViewState["EditUrl"]!=null) return (string)this.ViewState["EditUrl"];
                   else return "";
              }
              set
              {
                   this.ViewState["EditUrl"]=value;
              }
         }

         public string ExpandColumn
         {
              get
              {
                   if(this.ViewState["ExpandColumn"]!=null) return (string)this.ViewState["ExpandColumn"];
                   else return "";
              }
              set
              {
                   this.ViewState["ExpandColumn"]=value;
              }
         }

         //set paging

         public int IsPaging
         {
              get
              {
                   if(this.ViewState["IsPaging"]!=null) return (int)this.ViewState["IsPaging"];
                   else return 0;
              }
              set
              {
                   this.ViewState["IsPaging"]=value;
              }
         }

         public int PageCount
         {
              get
              {
                   if(this.ViewState["PageCount"]!=null) return (int)this.ViewState["PageCount"];
                   else return 0;
              }
              set
              {
                   this.ViewState["PageCount"]=value;
              }
         }

         public int CurrentPage
         {
              get
              {
                   if(this.ViewState["CurrentPage"]!=null) return (int)this.ViewState["CurrentPage"];
                   else return 1;
              }
              set
              {
                   this.ViewState["CurrentPage"]=value;
              }
         }

         //set sort
         public int IsSort
         {
              get
              {
                   if(this.ViewState["IsSort"]!=null) return (int)this.ViewState["IsSort"];
                   else return 0;
              }
              set
              {
                   this.ViewState["IsSort"]=value;
              }
         }

         public int sortColumn
         {
              get
              {
                   if(this.ViewState["sortColumn"]!=null) return (int)this.ViewState["sortColumn"];
                   else return -1;
              }
              set
              {
                   this.ViewState["sortColumn"]=value;
              }
         }

         
    
         public string  sortColumnName
         {
              get
              {
                   if(this.ViewState["sortColumnName"]!=null) return (string)this.ViewState["sortColumnName"];
                   else return "";
              }
              set
              {
                   this.ViewState["sortColumnName"]=value;
              }
         }


         public string sortOrder
         {
              get
              {
                   if(this.ViewState["sortOrder"]!=null) return (string)this.ViewState["sortOrder"];
                   else return "ASC";
              }
              set
              {
                   this.ViewState["sortOrder"]=value;
              }
         }
         public DataSet source
         {
              get
              {
                   return (DataSet)this.ViewState["source"];
              }
              set
              {

                   this.ViewState["source"]=value;
              }
         }

         public event EventHandler    Delete;
         public event EventHandler    Refresh;
    

         public void RaisePostDataChangedEvent() 
         {

              // IPostBackDataHandler 協定的一部分。如果曾經從 LoadPostData 方法返回真
              // (表示需要引發更改通知),則被調用。由於
              // 始終返回假,則此方法只是一個空操作。
         }

         //          protected void OnChange(EventArgs e) 
         //          {
         //               Sort(this, e);
         //          }
         public void RaisePostBackEvent(String eventArgument) 
         {
              if (eventArgument.IndexOf("|")>-1) 
              {

                   IDArgs ide=new IDArgs(eventArgument.Substring(eventArgument.IndexOf("|")+1));
                   if (Delete!=null)
                   {
                        Delete(this,ide);

                   }
                   return;
              }
              string     flag="";     
              switch(eventArgument)                    
              {
                   case "first":this.CurrentPage =1;break;
                   case "prev":this.CurrentPage -- ;break;
                   case "next":this.CurrentPage ++ ;break;
                   case "last":this.CurrentPage =this.PageCount;break;
                   case "":break;
                   default:
                   {
                        DataTable dt=source.Tables[0];
                        int lastColumn=sortColumn;
                        for(int i=0;i                             if (eventArgument==dt.Columns[i].ColumnName)
                             {
                                  sortColumn=i;
                                  break;
                             }

                        if (lastColumn==sortColumn) { if (this.sortOrder=="DESC") sortOrder="ASC"; else sortOrder="DESC";}
                        else sortOrder="ASC";
                        sortColumnName=eventArgument;
                        break;
                   }
              }
          
              //               if ( flag=="sort")
              //               {
              //                    if(this.IsSort ==0) 
              //                    {
              //                         return;
              //                    }
              //               }

              if ( Refresh!=null) Refresh(this,EventArgs.Empty );
         }



         private string WriteScipt()
         {
              string script=@" ";
              string style=@"
                                 
          ";

         
              return script+style; 
         }
     
         private string writeList()
         {
              
              int[] columnWidth=new int[] {20,100,100,100,0};
              DataTable dt=source.Tables[0];
              string title=(this.IsSort ==0)?"title":"SortTitle";
              string list="

"+sortFlag+"";
                        }

                        else sortstr="";
                        if (columnWidth[j]==0)
                             list+="<?xml:namespace prefix = td?οnclick=/"jscript />"+dt.Columns[j].ColumnName+sortstr+"";
                        else
                             list+=""+dt.Columns[j].ColumnName+sortstr+"";
                   }
              }
              else
              {
                   for(int j=1;j                   {
                        
                        if (columnWidth[j]==0)
                             list+=""+dt.Columns[j].ColumnName+"";
                        else
                             list+=""+dt.Columns[j].ColumnName+"";
                   }
              }

              list+="<?xml:namespace prefix = span?title='Refresh'?οnclick=/"jscript />L";
              list+="<?xml:namespace prefix = div?style='BORDER-RIGHT />
";
           
              list+="
5<?xml:namespace prefix = span??class=delete?οnclick=/"jscript />r1"+dt.Rows[i][j].ToString()+"
<?xml:namespace prefix = div???id='"+dt.Rows[i][0].ToString()+"'?style?=?'DISPLAY />
desc


"+dt.Rows[i][ExpandColumn].ToString()+"

";
              

              if (this.IsPaging ==0)return list; 
              //set pageing
              string paging="";
              if ( PageCount<2)
                   paging="9|3|4|:";
              else
              {
                   if (this.CurrentPage==1) 
                        paging="9|3|<?xml:namespace prefix = td??οnclick=/"jscript />4|:";
                   else if (this.CurrentPage ==this.PageCount)
                        paging="9|3|4|:";
                   else 
                        paging="9|3|4|:";
              }

         
              list +="
Total:"+this.PageCount+"Page:"+this.CurrentPage+"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章