• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè)

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:45:48
    文檔

    ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè)

    ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè): 最近在使用ASP.net 2.0的GridView 控件時(shí),發(fā)現(xiàn)排序與分頁(yè)功能Microsoft實(shí)現(xiàn)的都很簡(jiǎn)單,比如排序,在點(diǎn)擊列名的時(shí)候來(lái)觸發(fā)整頁(yè)的PostBack,然后排序,但是在列頭上沒有一個(gè)顯示升序降序的圖標(biāo),這會(huì)讓最終用戶使用時(shí)很迷惑,因?yàn)椴恢朗巧蛄诉€是降序了,
    推薦度:
    導(dǎo)讀ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè): 最近在使用ASP.net 2.0的GridView 控件時(shí),發(fā)現(xiàn)排序與分頁(yè)功能Microsoft實(shí)現(xiàn)的都很簡(jiǎn)單,比如排序,在點(diǎn)擊列名的時(shí)候來(lái)觸發(fā)整頁(yè)的PostBack,然后排序,但是在列頭上沒有一個(gè)顯示升序降序的圖標(biāo),這會(huì)讓最終用戶使用時(shí)很迷惑,因?yàn)椴恢朗巧蛄诉€是降序了,

        最近在使用ASP.net 2.0的GridView 控件時(shí),發(fā)現(xiàn)排序與分頁(yè)功能Microsoft實(shí)現(xiàn)的都很簡(jiǎn)單,比如排序,在點(diǎn)擊列名的時(shí)候來(lái)觸發(fā)整頁(yè)的PostBack,然后排序,但是在列頭上沒有一個(gè)顯示升序降序的圖標(biāo),這會(huì)讓最終用戶使用時(shí)很迷惑,因?yàn)椴恢朗巧蛄诉€是降序了,所以今天首先解決的第一問(wèn)題就是升序降序在列上顯示圖標(biāo),第二要解決的問(wèn)題是默認(rèn)GridView按列排序只能排一列的,也就是不能進(jìn)行多列排序,而在實(shí)際應(yīng)用中僅僅按照一列來(lái)排序是不能滿足業(yè)務(wù)需求的,第三是GridView 分頁(yè)問(wèn)題,GridView預(yù)定義的分頁(yè)頁(yè)碼顯示,比較簡(jiǎn)單,而實(shí)際應(yīng)用中,分頁(yè)可能不是只顯示首頁(yè),上一頁(yè),下一頁(yè),末頁(yè),或者是數(shù)字的頁(yè)碼那么簡(jiǎn)單,應(yīng)該更需要,跳轉(zhuǎn),當(dāng)前的頁(yè)碼,總頁(yè)數(shù)等,更詳盡的信息。

    第一:GridView 多列排序與排序圖標(biāo)顯示

    首先我們可以新建一個(gè)類庫(kù)程序,主要需要引用System.Web.Dll文件
    然后新建一個(gè)類,這個(gè)類繼承與GridView控件,我們只需要對(duì)部分方法進(jìn)行重新即可。
    我的演示的例子,采用了單列排序,如果啟用多列排序,把控件的AllowMultiColumnSorting設(shè)置為True就是
    多列排序。

      1    public class WebGridView:GridView
      2    {
      3        屬性#region 屬性
      4        /**//// <summary>
      5        /// 是否啟用或者禁止多列排序
      6        /// </summary>
      7        [
      8        Description("是否啟用多列排序功能"),
      9        Category("排序"),
     10        DefaultValue("false"),
     11        ]
     12        public bool AllowMultiColumnSorting
     13        {
     14            get
     15            {
     16                object o = ViewState["EnableMultiColumnSorting"];
     17                return (o != null ? (bool)o : false);
     18            }
     19            set
     20            {
     21                AllowSorting = true;
     22                ViewState["EnableMultiColumnSorting"] = value;
     23            }
     24        }
     25        /**//// <summary>
     26        /// 升序時(shí)顯示圖標(biāo)
     27        /// </summary>
     28        [
     29        Description("升序時(shí)顯示圖標(biāo)"),
     30        Category("排序"),
     31        Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
     32        DefaultValue(""),
     33
     34        ]
     35        public string SortAscImageUrl
     36        {
     37            get
     38            {
     39                object o = ViewState["SortImageAsc"];
     40                return (o != null ? o.ToString() : "");
     41            }
     42            set
     43            {
     44                ViewState["SortImageAsc"] = value;
     45            }
     46        }
     47        /**//// <summary>
     48        /// 降序時(shí)顯示圖標(biāo)
     49        /// </summary>
     50        [
     51        Description("降序時(shí)顯示圖標(biāo)"),
     52        Category("排序"),
     53        Editor("System.Web.UI.Design.UrlEditor", typeof(System.Drawing.Design.UITypeEditor)),
     54        DefaultValue(""),
     55        ]
     56        public string SortDescImageUrl
     57        {
     58            get
     59            {
     60                object o = ViewState["SortImageDesc"];
     61                return (o != null ? o.ToString() : "");
     62            }
     63            set
     64            {
     65                ViewState["SortImageDesc"] = value;
     66            }
     67        }
     68        #endregion
     69        重寫方法#region 重寫方法
     70        protected override void OnSorting(GridViewSortEventArgs e)
     71        {
     72            if (AllowMultiColumnSorting)
     73            {
     74                e.SortExpression = GetSortExpression(e);
     75            }
     76
     77            base.OnSorting(e);
     78        }
     79        protected override void OnRowCreated(GridViewRowEventArgs e)
     80        {
     81            if (e.Row.RowType == DataControlRowType.Header)
     82            {
     83                if (SortExpression != String.Empty)
     84                {
     85                    DisplaySortOrderImages(SortExpression, e.Row);
     86                    this.CreateRow(0, 0, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
     87                }
     88            }
     89            base.OnRowCreated(e);
     90        }
     91        #endregion
     92        受保護(hù)的方法#region 受保護(hù)的方法
     93        /**//// <summary>
     94        ///  獲取排序表達(dá)式
     95        /// </summary>
     96        protected string GetSortExpression(GridViewSortEventArgs e)
     97        {
     98            string[] sortColumns = null;
     99            string sortAttribute = SortExpression;
    100
    101            if (sortAttribute != String.Empty)
    102            {
    103                sortColumns = sortAttribute.Split(",".ToCharArray());
    104            }
    105            if (sortAttribute.IndexOf(e.SortExpression) > 0 || sortAttribute.StartsWith(e.SortExpression))
    106            {
    107                sortAttribute = ModifySortExpression(sortColumns, e.SortExpression);
    108            }
    109            else
    110            {
    111                sortAttribute += String.Concat(",", e.SortExpression, " ASC ");
    112            }
    113            return sortAttribute.TrimStart(",".ToCharArray()).TrimEnd(",".ToCharArray());
    114
    115        }
    116        /**//// <summary>
    117        ///  修改排序順序
    118        /// </summary>
    119        protected string ModifySortExpression(string[] sortColumns, string sortExpression)
    120        {
    121            string ascSortExpression = String.Concat(sortExpression, " ASC ");
    122            string descSortExpression = String.Concat(sortExpression, " DESC ");
    123
    124            for (int i = 0; i < sortColumns.Length; i++)
    125            {
    126
    127                if (ascSortExpression.Equals(sortColumns[i]))
    128                {
    129                    sortColumns[i] = descSortExpression;
    130                }
    131
    132                else if (descSortExpression.Equals(sortColumns[i]))
    133                {
    134                    Array.Clear(sortColumns, i, 1);
    135                }
    136            }
    137
    138            return String.Join(",", sortColumns).Replace(",,", ",").TrimStart(",".ToCharArray());
    139
    140        }
    141        /**//// <summary>
    142        ///  獲取當(dāng)前的表達(dá)式對(duì)所選列進(jìn)行排序
    143        /// </summary>
    144        protected void SearchSortExpression(string[] sortColumns, string sortColumn, out string sortOrder, out int sortOrderNo)
    145        {
    146            sortOrder = "";
    147            sortOrderNo = -1;
    148            for (int i = 0; i < sortColumns.Length; i++)
    149            {
    150                if (sortColumns[i].StartsWith(sortColumn))
    151                {
    152                    sortOrderNo = i + 1;
    153                    if (AllowMultiColumnSorting)
    154                    {
    155                        sortOrder = sortColumns[i].Substring(sortColumn.Length).Trim();
    156                    }
    157                    else
    158                    {
    159                        sortOrder = ((SortDirection == SortDirection.Ascending) ? "ASC" : "DESC");
    160                    }
    161                }
    162            }
    163        }
    164        /**//// <summary>
    165        ///  繪制升序降序的圖片
    166        /// </summary>
    167        protected void DisplaySortOrderImages(string sortExpression, GridViewRow dgItem)
    168        {
    169            string[] sortColumns = sortExpression.Split(",".ToCharArray());
    170
    171            for (int i = 0; i < dgItem.Cells.Count; i++)
    172            {
    173                if (dgItem.Cells[i].Controls.Count > 0 && dgItem.Cells[i].Controls[0] is LinkButton)
    174                {
    175                    string sortOrder;
    176                    int sortOrderNo;
    177                    string column = ((LinkButton)dgItem.Cells[i].Controls[0]).CommandArgument;
    178                    SearchSortExpression(sortColumns, column, out sortOrder, out sortOrderNo);
    179                    if (sortOrderNo > 0)
    180                    {
    181                        string sortImgLoc = (sortOrder.Equals("ASC") ? SortAscImageUrl : SortDescImageUrl);
    182
    183                        if (sortImgLoc != String.Empty)
    184                        {
    185                            Image imgSortDirection = new Image();
    186                            imgSortDirection.ImageUrl = sortImgLoc;
    187                            dgItem.Cells[i].Controls.Add(imgSortDirection);
    188
    189                        }
    190                        else
    191                        {
    192
    193                            if (AllowMultiColumnSorting)
    194                            {
    195                                Literal litSortSeq = new Literal();
    196                                litSortSeq.Text = sortOrderNo.ToString();
    197                                dgItem.Cells[i].Controls.Add(litSortSeq);
    198
    199                            }
    200                        }
    201                    }
    202                }
    203            }
    204
    205        }
    206        #endregion
    207    }

    第二:詳盡的分頁(yè)信息顯示,此功能沒有封裝成控件形式,直接在GridView_DataBound事件中對(duì)尾頁(yè)操作即可。
    下面是多列排序與分頁(yè)顯示代碼的演示

    <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 = "當(dāng)前頁(yè): " + 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="~\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="頁(yè)碼:" runat="server" />
                                <asp:DropDownList ID="PageDropDownList" AutoPostBack="true" OnSelectedIndexChanged="PageDropDownList_SelectedIndexChanged"
                                    runat="server" />
                                <asp:LinkButton CommandName="Page" CommandArgument="First" ID="linkBtnFirst" runat="server">首頁(yè)</asp:LinkButton>
                                <asp:LinkButton CommandName="Page" CommandArgument="Prev" ID="linkBtnPrev" runat="server">上一頁(yè)</asp:LinkButton>
                                <asp:LinkButton CommandName="Page" CommandArgument="Next" ID="linkBtnNext" runat="server">下一頁(yè)</asp:LinkButton>
                                <asp:LinkButton CommandName="Page" CommandArgument="Last" ID="linkBtnLast" runat="server">末頁(yè)</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>

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè)

    ASP.Net2.0 GridView 多列排序,顯示排序圖標(biāo),分頁(yè): 最近在使用ASP.net 2.0的GridView 控件時(shí),發(fā)現(xiàn)排序與分頁(yè)功能Microsoft實(shí)現(xiàn)的都很簡(jiǎn)單,比如排序,在點(diǎn)擊列名的時(shí)候來(lái)觸發(fā)整頁(yè)的PostBack,然后排序,但是在列頭上沒有一個(gè)顯示升序降序的圖標(biāo),這會(huì)讓最終用戶使用時(shí)很迷惑,因?yàn)椴恢朗巧蛄诉€是降序了,
    推薦度:
    標(biāo)簽: 圖標(biāo) 排序 分頁(yè)
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产美女精品视频| 亚洲午夜国产精品无码老牛影视| 中文字幕九七精品乱码| 国产91精品在线| 亚洲欧美日韩久久精品第一区| 国产精品成| 热久久这里只有精品| 久久成人国产精品| 亚洲精品中文字幕乱码三区 | 亚洲高清专区日韩精品 | 国产69精品久久久久777| 日韩精品国产另类专区| 亚洲国产精品综合久久一线| 精品综合久久久久久88小说| 99精品国产福利在线观看| 91精品在线播放| 精品无码国产一区二区三区AV| 中文字幕一区二区三区日韩精品| 老司机精品影院91| 久久精品国产99久久久香蕉| 国产精品亚洲mnbav网站| 成人精品一区二区久久久| 亚洲第一精品在线视频| 好吊妞视频精品| 999国内精品永久免费视频| 国内精品91最新在线观看| 精品一区二区三区免费毛片爱| 自拍偷自拍亚洲精品情侣| 亚洲福利精品电影在线观看| 久久青青草原精品国产不卡| 国产一区二区精品久久凹凸| 国产精品热久久毛片| 国产精品户外野外| 国产女人18毛片水真多18精品| 国产精品无码一区二区在线观一 | 亚洲一区精品无码| 中文字幕亚洲精品无码| 无码人妻精品中文字幕| 嫖妓丰满肥熟妇在线精品| 久久国产精品无码HDAV| 2022国产精品不卡a|