CSDN博客

img 2002pine

一个自定义的可以分页,排序,扩展显示grid控件

发表于2004/7/9 14:40:00  735人阅读

第一次写,忘记注解,对不住.

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="";
              if (ExpandColumn!="") list+="";

              if (this.IsSort==1)
              {
                   string sortstr="";
                   string sortFlag=(this.sortOrder=="ASC")?"5":"6";
                   //set header and sort
                   for(int j=1;j                   {
                        if (sortColumn==j) 
                        {
                             sortstr=""+sortFlag+"
";
                        }

                        else sortstr="";
                        if (columnWidth[j]==0)
                             list+=""+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+="L";
              list+="";
           
              list+="";
              for(int i=0;i              {
                   list+="";
                   //expand column
                   if (ExpandColumn!="")
                        list+="5";
                   //delete column
                   list+="r";
                   //edit column
                   list+="1";
                   
                   for(int j=1;j                   {
                        list+=""+dt.Rows[i][j].ToString()+"";
                   }
                   list+="";
                   //expand display
                   if (ExpandColumn!="")
                        list+="desc


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

";
              }
              list +="
";
              

              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|4|:";
                   else if (this.CurrentPage ==this.PageCount)
                        paging="9|3|4|:";
                   else 
                        paging="9|3|4|:";
              }

         
              list +="Total:"+this.PageCount+"Page:"+this.CurrentPage+""+paging;
              return list;
         }
         /// 
         /// Render this control to the output parameter specified.
         /// 

         ///  The HTML writer to write out to 
         protected override void Render(HtmlTextWriter output)
         {
              output.Write(WriteScipt());
              output.Write(writeList());
         }
    }
}
0 0

相关博文

我的热门文章

img
取 消
img