zoukankan      html  css  js  c++  java
  • (转)一个带自定义分页,排序功能的DATAGRID控件(公开源码) dodo

     

      
      因为项目需要,要弄个有这样功能的控件。要有自定意分页和排序的功能。在这个控件里面数据的绑定都是用DataView来实现,DataView放在Session里,如果大家有更灵活的方法可以留言给我。Session的名字我已经做成了属性叫sessionName,可以直接设置,你们喜欢叫什么就自己改吧。以下是完整的代码,由于是刚刚出炉,可能会有考虑不足的地方,希望使用或修改的朋友多提意见一起交流,我分享我快乐:)
    下面是可以使用的控件
    先下载过的朋友,那个DLL文件有问题,下这个新的,下面的程序代码也改了一个小地方271行
    该控件使用方法和DataGrid一样,需要分页时必须设置分页功能为true
    LcDataGrid.rar

      1using System;
      2using System.Web.UI;
      3using System.Web.UI.WebControls;
      4using System.ComponentModel;
      5using System.Data;
      6
      7namespace LcWebControls
      8{
      9    /// <summary>
     10    /// 卢昶 2005-7-11
     11    /// Email:darkangel@ynmail.com
     12    /// msn:darkangellc@msn.com
     13    /// </summary>

     14    [DefaultProperty("Text"), 
     15        ToolboxData("<{0}:LcDataGrid runat=server></{0}:LcDataGrid>")]
     16    public class LcDataGrid : System.Web.UI.WebControls.DataGrid
     17    {
     18#region Define
     19        private string text;
     20        private System.Web.UI.WebControls.Button bt=new Button();
     21        private TextBox tb=new TextBox();
     22        private System.Web.UI.Page pg=new Page();
     23        private string sessionname;
     24        private LinkButton PrevPAGE=new LinkButton();
     25        private LinkButton NextPAGE=new LinkButton();
     26        private DropDownList ddl=new DropDownList();
     27        private Label lbend=new Label();
     28        private Label lbtag=new Label();
     29        private Label lbddls=new Label();
     30        private Label lbddle=new Label();
     31        
     32#endregion

     33#region displayPortery
     34
     35        public int Currindex
     36        {
     37            set
     38            {
     39                try
     40                {
     41                     this.CurrentPageIndex=value;
     42                }

     43                catch
     44                {
     45                    
     46                }

     47                
     48            }

     49            get
     50            {
     51              return this.CurrentPageIndex;
     52            }

     53        }

     54#endregion
        
     55#region Property
     56
     57
     58        [Bindable(true), 
     59            Category("Appearance"), 
     60            DefaultValue("")] 
     61        public string Text 
     62        {
     63            get
     64            {
     65                return text;
     66            }

     67
     68            set
     69            {
     70                text = value;
     71            }

     72        }

     73        [Bindable(true), 
     74        Category("Appearance"), 
     75        DefaultValue(""),
     76        DescriptionAttribute("Session的名称,Session用于数据绑定,必须是DataView类型")
     77        ] 
     78        public string sessionName
     79        {
     80            get
     81            {
     82                return sessionname;
     83            }

     84            set
     85            {
     86                sessionname=value;
     87
     88            }

     89        }

     90        [Bindable(true), 
     91            Category("Appearance"), 
     92            DefaultValue("")] 
     93            public string TT
     94            {
     95                get
     96                {
     97                    try
     98                    {
     99                        
    100                        return this.ViewState["sort"].ToString();
    101                    }

    102                    catch
    103                    {
    104                         this.ViewState["sort"]="asc";
    105                        return this.ViewState["sort"].ToString();
    106                    }

    107                    
    108                }

    109                set
    110                {
    111                    this.ViewState["sort"]=value;
    112                }

    113
    114            }

    115        
    116    #endregion

    117
    118        /// <summary> 
    119        /// 将此控件呈现给指定的输出参数。
    120        /// </summary>
    121        /// <param name="output"> 要写出到的 HTML 编写器 </param>

    122
    123protected override void OnItemCreated(DataGridItemEventArgs e)
    124        {    
    125
    126            if(e.Item.ItemType == ListItemType.Pager)
    127            {
    128                e.Item.Cells[0].Controls.Clear();
    129                TextBox tb=new TextBox();
    130                creatControl(e.Item.Cells[0]);
    131            }

    132
    133         
    134        }

    135protected override void OnItemCommand(DataGridCommandEventArgs e)
    136        {
    137            string strCommandName = e.CommandName;
    138            if(e.CommandName == null
    139                return;
    140
    141            strCommandName = string.IsInterned(strCommandName);
    142            switch(e.CommandName)
    143            {
    144            
    145                case "PrevPAGE":
    146                {
    147                    PrevPAGE_Click(null,null);
    148                    break;
    149                }

    150                case "NextPAGE":
    151                {
    152                    NextPAGE_Click(null,null);
    153                    break;
    154                }

    155                
    156            }

    157            base.OnItemCommand(e);
    158        }

    159    
    160protected override void OnItemDataBound(DataGridItemEventArgs e)
    161{
    162            
    163           if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
    164            {
    165                e.Item.Attributes.Add("style","cursor:hand");
    166                e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#FFCC00'");
    167                e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=''");
    168            }

    169}

    170        protected override void OnSortCommand(DataGridSortCommandEventArgs e)
    171        {
    172            base.OnSortCommand (e);
    173            DataView dv=(DataView)this.Page.Session[sessionName];
    174            if (TT.Equals("desc"))
    175            {
    176                dv.Sort=e.SortExpression+" asc";
    177                TT="asc";
    178            }

    179            else
    180            {
    181                dv.Sort=e.SortExpression+" desc";
    182                TT="desc";
    183            }

    184            
    185            
    186            this.DataSource=dv;
    187            this.DataBind();
    188            this.Page.Session[sessionName]=dv;
    189        }

    190
    191
    192    
    193
    194#region InitDataGird
    195
    196        protected void creatControl(TableCell tc)
    197        {
    198
    199            creatPageCount(tc);
    200            creatCount(tc);
    201            creatSPage(tc);
    202            creatDDL(tc);
    203
    204
    205        }

    206        private void creatCount(TableCell tc)
    207        {
    208        
    209            lbtag.Text="  每页显示记录数";
    210            tb.Text=this.PageSize.ToString();
    211            tb.Width=20;
    212            bt.Text="提交";
    213            bt.Click+=new EventHandler(bt_Click);
    214            tc.Controls.Add(lbtag);
    215            tc.Controls.Add(tb);
    216            tc.Controls.Add(bt);
    217           // 
    218
    219        }

    220        
    221        private void creatPageCount(TableCell tc)
    222        {
    223            Label lb=new Label();
    224            lb.Text="<P align=\"right\"> 共"+this.PageCount+"页    第"+(this.CurrentPageIndex+1)+"页  ";
    225            tc.Controls.Add(lb);
    226
    227        }

    228    
    229        private void creatSPage(TableCell tc)
    230        {
    231         PrevPAGE.Text="上一页";
    232        NextPAGE.Text="下一页";    
    233        PrevPAGE.CommandName="PrevPAGE";
    234        NextPAGE.CommandName="NextPAGE";
    235        tc.Controls.Add(PrevPAGE);
    236        tc.Controls.Add(NextPAGE);
    237        }

    238        private void creatDDL(TableCell tc)
    239        {
    240            
    241            lbend.Text="页</p>";
    242            lbddls.Text="  跳转到第";
    243            ddl.AutoPostBack=true;
    244            ddl.EnableViewState=true;
    245            if (!this.Page.IsPostBack)
    246            {
    247                ddl.Items.Clear();
    248                initDDL();
    249            }

    250            ddl.SelectedIndexChanged+=new EventHandler(ddl_SelectedIndexChanged);
    251            tc.Controls.Add(lbddls);
    252            tc.Controls.Add(ddl);
    253            tc.Controls.Add(lbend);
    254        }

    255        private void initDDL()
    256        {
    257            int count=this.PageCount;
    258            
    259            for (int i=1;i<=count;i++)
    260            {
    261                ddl.Items.Add(i.ToString());
    262                
    263            }

    264        }

    265        #endregion

    266#region InitEvent
    267        private void bt_Click(object sender, EventArgs e)
    268    {
    269        this.PageSize=Convert.ToInt32(tb.Text);
    270        ddl.Items.Clear();
    271        initDDL();
                     this.CurrentPageIndex=0;

    272        BindGrid();
    273    }

    274        private void PrevPAGE_Click(object sender, EventArgs e)
    275        {
    276            int con=this.CurrentPageIndex;
    277            if (this.CurrentPageIndex-1<0)
    278            {
    279                
    280
    281            }

    282            else
    283            {
    284                this.CurrentPageIndex=con-1;
    285            }

    286            ddl.SelectedValue=(this.CurrentPageIndex+1).ToString();
    287            BindGrid();
    288            
    289        }

    290        private void NextPAGE_Click(object sender, EventArgs e)
    291        {
    292            int con=this.CurrentPageIndex;
    293            if (this.CurrentPageIndex>=this.PageCount-1)
    294            {
    295                
    296            }

    297            else
    298            {
    299                this.CurrentPageIndex=con+1;
    300            }

    301            ddl.SelectedValue=(this.CurrentPageIndex+1).ToString();
    302            BindGrid();
    303            
    304        }

    305        private void ddl_SelectedIndexChanged(object sender, EventArgs e)
    306        {
    307            int curri=Convert.ToInt16(ddl.SelectedValue) - 1;
    308            this.CurrentPageIndex=curri;
    309            BindGrid();
    310        }

    311
    312        #endregion

    313#region GridFunction
    314private void BindGrid()
    315{
    316    this.DataSource=(DataView)Page.Session[sessionName];
    317    this.DataBind();
    318
    319}

    320        #endregion

    321
    322        
    323    }

    324}

    325
  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/481164.html
Copyright © 2011-2022 走看看