1. 程式人生 > >擴充套件AspNetPager控制元件,增加動態設定PageSize的方法

擴充套件AspNetPager控制元件,增加動態設定PageSize的方法

說明:以下更改基於Version 7.5.1 - 2015-6-9 原始碼下載地址:https://github.com/Webdiyer/AspNetPagerCN/releases

1.通過url方式更改PageSize

AspNetPager Version 7.1以上版本可以使用UrlPageSizeName引數來更改。
PageSize屬性原始碼(Properties.cs檔案中):
        public int PageSize
        {
            get
            {
//檢測使用UrlPageSizeName引數
                if (!string.IsNullOrEmpty(UrlPageSizeName) && !DesignMode)
                {
                    int pageSize;
                    if (int.TryParse(Page.Request.QueryString[UrlPageSizeName], out pageSize))
                    {
                        if (pageSize > 0)
                            return pageSize;
                    }
                }
//End


                if (null != cloneFrom)
                    return cloneFrom.PageSize;
                object obj = ViewState["PageSize"];
                return (obj == null) ? 10 : (int)obj;
            }
            set
            {
                ViewState["PageSize"] = value;
            }
        }
2.通過自定義下拉框更改PageSize

a)在Properties.cs檔案中增加ShowPageSizeBox屬性

        /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Property[@name="ShowPageSizeBox"]/*'/>
        [Browsable(true), ANPCategory("cat_PageSizeBox"), DefaultValue(null), ANPDescription("desc_ShowPageSizeBox")]
        public bool ShowPageSizeBox
        {
            get
            {
                if (null != cloneFrom)
                    return cloneFrom.ShowPageSizeBox;
                object obj = ViewState["ShowPageSizeBox"];

                //此處為當未設定ShowPageSizeBox屬性時,取web.config中AppSettings的ShowPageSizeBox
                if (obj == null)
                {
                    obj = System.Configuration.ConfigurationManager.AppSettings["ShowPageSizeBox"];
                }
                return (obj == null) ? false : bool.Parse(obj.ToString());
            }
            set { ViewState["ShowPageSizeBox"] = value; }
        }
b)在Helper.cs檔案中更改RenderPagingElements方法在原方法的後面增加
            ...
            //上面的程式碼省略,此處為要新增的程式碼
            if (ShowPageSizeBox && this.PageSize < this.RecordCount)
            {
                string sizeClientId = UniqueID + "_ChangePageSize";
                writer.Write("  每頁顯示條數:");
                writer.AddAttribute(HtmlTextWriterAttribute.Name, sizeClientId);
                writer.AddAttribute(HtmlTextWriterAttribute.Id, sizeClientId);
                writer.AddAttribute(HtmlTextWriterAttribute.Onchange, Page.ClientScript.GetPostBackEventReference(this, null));


                writer.RenderBeginTag(HtmlTextWriterTag.Select);
                listPageSize(writer);
                writer.RenderEndTag();
            }
            //結束
        }//end RenderPagingElements

同時在Helper.cs檔案中增加下拉框的內容選項方法
        void listPageSize(HtmlTextWriter writer)
        {
            for (int i = 10; i <= 50; i+=5)
            {
                writer.Write("<option value=\"");
                writer.Write(i);
                writer.Write("\"");
                if (i == PageSize)
                    writer.Write(" selected=\"true\"");
                writer.Write(">");
                writer.Write(i);
                writer.Write("</option>");
            }
        }
c)修改aspnetpager.cs檔案中的OnLoad事件
        /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="OnLoad"]/*'/>
        protected override void OnLoad(EventArgs e)
        {
            if (UrlPaging)
            {
                currentUrl = Page.Request.Path;
                queryString = Page.Request.ServerVariables["Query_String"];
                if (!string.IsNullOrEmpty(queryString) && queryString.StartsWith("?")) //mono <v2.8 compatible
                    queryString = queryString.TrimStart('?');
                if (!Page.IsPostBack && cloneFrom == null)
                {
                    int index;
                    int.TryParse(Page.Request.QueryString[UrlPageIndexName], out index);
                    if (index <= 0)
                        index = 1;
                    else if (ReverseUrlPageIndex)
                        index = PageCount - index + 1;
                    PageChangingEventArgs args = new PageChangingEventArgs(index);
                    OnPageChanging(args);
                }
            }
            else
            {
                inputPageIndex = Page.Request.Form[UniqueID + "_input"];

                #region ########## 新增ShowPageSizeBox屬性 ##################
                if (null != Page.Request.Form[UniqueID + "_ChangePageSize"])
                {
                    this.PageSize = int.Parse(Page.Request.Form[UniqueID + "_ChangePageSize"]);
                }
                #endregion

            }
            base.OnLoad(e);
            if ((UrlPaging || (!UrlPaging && PageIndexBoxType == PageIndexBoxType.TextBox)) && (ShowPageIndexBox == ShowPageIndexBox.Always || (ShowPageIndexBox == ShowPageIndexBox.Auto && PageCount >= ShowBoxThreshold)))
            {
                HttpContext.Current.Items[scriptRegItemName] = true;
            }
        }
d)給ShowPageSizeBox屬性新增說明,在AspNetPagerDocs.xml檔案中新增如下節點。
  <Property name="ShowPageSizeBox">
    <summary>
      獲取或設定每頁顯示記錄數。
    </summary>
    <value>
      一個布林型
    </value>
  </Property>  

相關推薦

擴充套件AspNetPager控制元件增加動態設定PageSize方法

說明:以下更改基於Version 7.5.1 - 2015-6-9 原始碼下載地址:https://github.com/Webdiyer/AspNetPagerCN/releases 1.通過url方式更改PageSize AspNetPager Version 7.1以

android在滑動控制元件過程中動態設定view背景透明的問題

2、在網上找了資料才知道,在佈局中多個控制元件同時使用一個資源的時候,這些控制元件會共用一個狀態,例如ColorState,如果你改變了一個控制元件的狀態,其他的控制元件都會接收到相同的通知。這時我們可以使用mutate()方法使該控制元件狀態不定,這樣不定狀態的控制元件就不會共享自己的狀態了。

Android 開發JAVA動態設定控制元件大小

在我們的實際android開發中,我們經常需要對控制元件進行設定。在xml中設計大小,我們大家都很熟悉。那麼,使用java動態設定控制元件大小,該如何寫呢。以下是我寫的方法: /** * 設定控制元件大小 * @param view 控制元件

VS程式設計編輯WPF過程中點選設計器中介面某一控制元件在XAML中高亮突出顯示相應的控制元件程式碼的設定方法

在編輯製件WPF過程中,當介面中控制元件較多時,可通過點選設計器中具體的控制元件,從而中在xaml程式碼視窗中快速跳轉到對應的部分。為了突出顯示該部分控制元件程式碼的名稱,方便視覺上直觀的觀察到被選中的控制元件對應的XAML程式碼,可以在VS中設定:選中控制元件後,高亮顯示對應的XAML

scrollArea設定背景顏色不影響子控制元件終於找到解決辦法(轉載)

使QScrollArea的背景透明,乍看很easy,其實卻是一個目前百度上百不出來的問題; 最容易想到的,用qss: scrollArea->setStyleSheet("background-color:transparent;"); 但是這樣會使scrol

android 在java程式碼中動態設定控制元件的位置和設定片大小

需要動態改變佈局裡面控制元件的相對位置 如: 1.改變RelativeLayout佈局裡面某個控制元件的layout_toLeftOf 的屬性 RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)view

【Visual Studio 擴充套件工具】使用 ComponentOne迷你圖控制元件進行視覺化資料趨勢分析

  概述    迷你圖 —— Sparklines是迷你的輕量級圖表,有助於快速視覺化資料。 它們是由資料視覺化傳奇人物Edward Tufte發明的,他將其描述為“資料密集,設計簡單,位元組大小的圖形。”雖然迷你圖不包含傳統圖表中的許多元素(如軸和座標), 基於它們的簡單性,它們可以比其他圖表型別更具資訊性

sobox彈窗控制元件設定彈出窗的z-index

之前試圖修改js原始碼,想了一天,但是不管用,然後在jsp直接加程式碼,竟然可以了,程式碼如下: function click(){                          var lang = 'zh';                         var

android不用xml檔案動態寫Animation,注:Animation並不會真正移動控制元件需要呼叫onAnimationEnd

android不用xml檔案,動態寫Animation // 移動animation public static void Translate(View view, float fromX, float toX, float fromY,    float toY, l

Android中控制元件的事件——xml設定對應效果state_[pressedcheckedselectedfocused]

本篇文章主要是討論下控制元件的點選事件 一、在Drawable中新增控制元件的backgroundColor樣式(點選切換顏色) 直接貼測試結果了:【在Drawable中建立xml資原始檔,在其中的Selector標籤對中新增樣式(如下黑色截圖)】 ImageButton

Delphi 動態建立控制元件賦值使用

 uses 中定義: type   TMyComponent = class(TComponent)   public     item1, item2, item3, item4, item5, item6: string;     constructor Crea

asp.net動態生成控制元件併為控制元件繫結事件

1.動態查詢控制元件的例子:         //查詢控制元件         Image img = (Image)Page.FindControl("Image1");         //設定圖片資源         img.ImageUrl = "~/image/p

NTKO控制元件安裝:“不能裝載文件控制元件請在檢查瀏覽器的選項中檢查瀏覽器的安全設定”問題

上禮拜手欠把OFFICE文件控制元件NTKO給解除安裝了,結果這周通知基金結題網上填寫報告。本以為就裝個控制元件,沒想到各種問題,幾經嘗試終於解決,總結如下: 1. 問題:不能裝載文件控制元件 經常遇到專案申報系統需要安裝網上OFFICe文件控制元件NTKO。首次使用時會提

工作記錄--WPF自定義控制元件實現一個可設定編輯模式的TextBox

1. 背景   因為最近在使用wpf開發桌面端應用,在檢視頁面需要把TextBox和Combox等控制元件設定為只讀的。原本是個很簡單的事,設定屬性IsReadOnly="True"或IsEnabled="False"就可以解決了,可是產品覺得樣式不是他想要的(背景是灰色的),想要實現的效果是和編輯時的樣式一

duilib中將xml封裝為控制元件簡單示例(簡單自定義控制元件封裝幾個基本控制元件合為1個自定義控制元件)

使用duilib的時候,難免會有這樣的需求: 某一塊Container(Layout)以及裡面的佈局需要重複用,不想每次都複製貼上這麼多,要不然xml太大了; 通過繼承來自定義一個控制元件,比如CButtonUIEx之類的,想讓他像button一樣在xml中被識別; xml裡面的東西

Combobox控制元件使用MoveWindow()移動位置時OnNcCalcSize訊息處理

說到OnNcCalcSize在程式內部的訊息處理次數。主要說的是Combobox控制元件 1:如果是從工具箱拖出來的控制元件 只會走一次  OnNcCalcSize()  訊息 2:從工具箱中拖出來的控制元件,並且使用了MoveWindow時   &

flutter的對齊控制元件拓展空間listview,gridview控制元件使用

1.使用mainAxisAlignment和crossAxisAlignment屬性來控制行或列如何對齊其子控制元件。對於行,主軸水平執行,橫軸垂直執行。對於列,主軸垂直執行,橫軸水平執行。 2.在頁面展示的時候經常出現螢幕展示不全,這時候就會在螢幕上出現斜線框子。這樣的解決方法一是使用l

利用photoView實現可點選放大到全屏顯示的控制元件效果類似於微信朋友圈點開看大圖

此控制元件繼承自ImageView,實現效果與微信朋友圈點開看大圖相似,點選控制元件後進入沉浸模式全屏顯示大圖,全屏時雙擊或手指拉伸可放大圖片,單擊會退出全屏 老規矩,先上控制元件實現程式碼: /** * 可點選放大全屏顯示的imageView * Created by Administ

金蝶bos 自定義UI介面新增複選框控制元件並且做業務處理

 /**      * 顯示工程型別      * @author daihao      * 

WPF查詢指定型別名的控制元件超簡單的方法

WPF查詢指定型別名的控制元件,超簡單的方法 /// <summary> /// 從當前控制元件開始,查詢指定型別名的控制元件 /// </summary> /// <param name="obj">當前控制元件</param> //