一个自定义的可以分页,排序,扩展显示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=@" <script>
???? ???? ???? ???? ?????var?Currentdiv;
?????????????????????var?CurrentImg;
?????????????????????function?expand(obj,flag)
?????????????????????{
????????????????????
??????????????????????var?ddd=document.getElementById(flag);
??????????????????????if(ddd.style.display?==''){ddd.style.display?='none';obj.innerText='5'?;}
??????????????????????else?{ddd.style.display?='';?obj.innerText='6'?;}
???? ???? ???? ???? ?????if?(Currentdiv!=null?&&?Currentdiv.style.display?==''&&?Currentdiv!=ddd?)
?????????????????????????{
?????????????????????????Currentdiv.style.display?='none';?
????????????????????????CurrentImg.innerText='5';
?????????????????????????}?
??????????????????????Currentdiv=ddd?;
?????????????????????CurrentImg=obj
??????????????????????}
????????????????????</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+="                         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+="                    //delete column
                   list+="                    //edit column
                   list+="                    
                   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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值