ASP.Net2.0 GridView 多列排序,显示排序图标,分页

最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用时很迷惑,因为不知道是升序了还是降序了, 所以今天首先解决的第一问题就是升序降序在列上显示图标,第二要解决的问题是默认GridView按列排序只能排一列的,也就是不能进行多列排序,而在实际应用中仅仅按照一列来排序是不能满足业务需求的,第三是GridView 分页问题,GridView预定义的分页页码显示,比较简单,而实际应用中,分页可能不是只显示首页,上一页,下一页,末页,或者是数字的页码那么简单,应该更需要,跳转,当前的页码,总页数等,更详尽的信息。

第一:GridView 多列排序与排序图标显示

首先我们可以新建一个类库程序,主要需要引用System.Web.Dll文件
然后新建一个类,这个类继承与GridView控件,我们只需要对部分方法进行重新即可。
我的演示的例子,采用了单列排序,如果启用多列排序,把控件的AllowMultiColumnSorting设置为True就是
多列排序。
  public   class  WebGridView:GridView
    
{
        属性
属性
        重写方法
重写方法
        受保护的方法
受保护的方法
    }
第二:详尽的分页信息显示,此功能没有封装成控件形式,直接在GridView_DataBound事件中对尾页操作即可。
下面是多列排序与分页显示代码的演示
< script runat = " server " >
    
void  PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)
    
{
        GridViewRow pagerRow 
= CustomersGridView.BottomPagerRow;
        DropDownList pageList 
= (DropDownList)pagerRow.Cells[0].FindControl("PageDropDownList");
        CustomersGridView.PageIndex 
= pageList.SelectedIndex;
    }

    
void  CustomersGridView_DataBound(Object sender, EventArgs e)
    
{
        GridViewRow pagerRow 
= CustomersGridView.BottomPagerRow;

        LinkButton linkBtnFirst 
= (LinkButton)pagerRow.Cells[0].FindControl("linkBtnFirst");
        LinkButton linkBtnPrev 
= (LinkButton)pagerRow.Cells[0].FindControl("linkBtnPrev");
        LinkButton linkBtnNext 
= (LinkButton)pagerRow.Cells[0].FindControl("linkBtnNext");
        LinkButton linkBtnLast 
= (LinkButton)pagerRow.Cells[0].FindControl("linkBtnLast");

        
if (CustomersGridView.PageIndex == 0)
        
{
            linkBtnFirst.Enabled 
= false;
            linkBtnPrev.Enabled 
= false;
        }

        
else if (CustomersGridView.PageIndex == CustomersGridView.PageCount-1)
        
{
            linkBtnLast.Enabled  
= false;
            linkBtnNext.Enabled 
= false;
        }

        
else if (CustomersGridView.PageCount<=0)
        
{
            linkBtnFirst.Enabled 
= false;
            linkBtnPrev.Enabled 
= false;
            linkBtnNext.Enabled 
= false;
            linkBtnLast.Enabled 
= false;
        }

        DropDownList pageList 
= (DropDownList)pagerRow.Cells[0].FindControl("PageDropDownList");
        Label pageLabel 
= (Label)pagerRow.Cells[0].FindControl("CurrentPageLabel");

        
if (pageList != null)
        
{
            
for (int i = 0; i < CustomersGridView.PageCount; i++)
            
{
                
int pageNumber = i + 1;
                ListItem item 
= new ListItem(pageNumber.ToString() + "/" + CustomersGridView.PageCount.ToString(), pageNumber.ToString());
                
if (i == CustomersGridView.PageIndex)
                
{
                    item.Selected 
= true;
                }

                pageList.Items.Add(item);

            }


        }

        
if (pageLabel != null)
        
{
            
int currentPage = CustomersGridView.PageIndex + 1;
            pageLabel.Text 
= "当前页: " + currentPage.ToString() +
              
" / " + CustomersGridView.PageCount.ToString();
        }

    }


</ script >

< html >
< body >
    
< form id = " Form1 "  runat = " server " >
        
< h3 >
            GridView PagerTemplate Example
</ h3 >
        
< asp:WebGridView ID = " CustomersGridView "  DataSourceID = " CustomersSqlDataSource "  AutoGenerateColumns = " true "
            AllowPaging
= " true "  OnDataBound = " CustomersGridView_DataBound "  SortAscImageUrl = " ~imagesarrow-up.gif "  SortDescImageUrl = " ~imagesarrow-down.gif "  runat = " server "  AllowSorting = " True "  Width = " 723px " >
            
< PagerStyle ForeColor = " Blue "  BackColor = " LightBlue "   />
            
< PagerTemplate >
                
< table width = " 100% " >
                    
< tr >
                        
< td width = " 70% " >
                            
< asp:Label ID = " MessageLabel "  ForeColor = " Blue "  Text = " 页码: "  runat = " server "   />
                            
< asp:DropDownList ID = " PageDropDownList "  AutoPostBack = " true "  OnSelectedIndexChanged = " PageDropDownList_SelectedIndexChanged "
                                runat
= " server "   />
                            
< asp:LinkButton CommandName = " Page "  CommandArgument = " First "  ID = " linkBtnFirst "  runat = " server " > 首页 </ asp:LinkButton >
                            
< asp:LinkButton CommandName = " Page "  CommandArgument = " Prev "  ID = " linkBtnPrev "  runat = " server " > 上一页 </ asp:LinkButton >
                            
< asp:LinkButton CommandName = " Page "  CommandArgument = " Next "  ID = " linkBtnNext "  runat = " server " > 下一页 </ asp:LinkButton >
                            
< asp:LinkButton CommandName = " Page "  CommandArgument = " Last "  ID = " linkBtnLast "  runat = " server " > 末页 </ asp:LinkButton >
                        
</ td >
                        
< td width = " 70% "  align = " right " >
                            
< asp:Label ID = " CurrentPageLabel "  ForeColor = " Blue "  runat = " server "   />
                        
</ td >
                    
</ tr >
                
</ table >
            
</ PagerTemplate >
       
</ asp:WebGridView >
        
< asp:SqlDataSource ID = " CustomersSqlDataSource "  SelectCommand = " Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers] "
            ConnectionString
= " <%$ ConnectionStrings:NorthWindConnectionString%> "  runat = " server " >
        
</ asp:SqlDataSource >

    
</ form >
</ body >
</ html >

效果:

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值