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

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

首先我们可以新建一个类库程序,主要需要引用System.Web.Dll文件
然后新建一个类,这个类继承与GridView控件,我们只需要对部分方法进行重新即可。
我的演示的例子,采用了单列排序,如果启用多列排序,把控件的AllowMultiColumnSorting设置为True就是
多列排序。

  1    public class WebGridView:GridView
  2    "是否启用多列排序功能"),
  9        Category("排序"),
 10        DefaultValue("false"),
 11        ]
 12        public bool AllowMultiColumnSorting
 13        "EnableMultiColumnSorting"];
 17                return (o != null ? (bool)o : false);
 18            "EnableMultiColumnSorting"] = value;
 23            "升序时显示图标"),
 30        Category("排序"),
 31        Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
 32        DefaultValue(""),
 33
 34        ]
 35        public string SortAscImageUrl
 36        "SortImageAsc"];
 40                return (o != null ? o.ToString() : "");
 41            "SortImageAsc"] = value;
 45            "降序时显示图标"),
 52        Category("排序"),
 53        Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
 54        DefaultValue(""),
 55        ]
 56        public string SortDescImageUrl
 57        "SortImageDesc"];
 61                return (o != null ? o.ToString() : "");
 62            "SortImageDesc"] = value;
 66            ",".ToCharArray());
104            ",", e.SortExpression, " ASC ");
112            ",".ToCharArray()).TrimEnd(",".ToCharArray());
114
115        " ASC ");
122            string descSortExpression = String.Concat(sortExpression, " DESC ");
123
124            for (int i = 0; i < sortColumns.Length; i++)
125            ",", sortColumns).Replace(",,", ",").TrimStart(",".ToCharArray());
139
140        "";
147            sortOrderNo = -1;
148            for (int i = 0; i < sortColumns.Length; i++)
149            "ASC" : "DESC");
160                    ",".ToCharArray());
170
171            for (int i = 0; i < dgItem.Cells.Count; i++)
172            "ASC") ? SortAscImageUrl : SortDescImageUrl);
182
183                        if (sortImgLoc != String.Empty)
184                        "server">
    void PageDropDownList_SelectedIndexChanged(Object sender, EventArgs e)
    "PageDropDownList");
        CustomersGridView.PageIndex = pageList.SelectedIndex;
    "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)
        "PageDropDownList");
        Label pageLabel = (Label)pagerRow.Cells[0].FindControl("CurrentPageLabel");
        if (pageList != null)
        "/" + CustomersGridView.PageCount.ToString(), pageNumber.ToString());
                if (i == CustomersGridView.PageIndex)
                "当前页: " + currentPage.ToString() +
              " / " + CustomersGridView.PageCount.ToString();
        "Form1" runat="server">
        <h3>
            GridView PagerTemplate Example</h3>
        <asp:WebGridView ID="CustomersGridView" DataSourceID="CustomersSqlDataSource" AutoGenerateColumns="true"
            AllowPaging="true" OnDataBound="CustomersGridView_DataBound" SortAscImageUrl="~\images\arrow-up.gif" SortDescImageUrl="~\images\arrow-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="<%" runat="server">
        </asp:SqlDataSource>
    </form>
</body>
</html>

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?