zoukankan      html  css  js  c++  java
  • 重写的GridView,支持CheckBox选择,DataTable和List排序,SQL分页等

    重新封装了一个 GridView,支持如下功能:

    1. CheckBox选择记录,指定CheckBox的位置
    2. 支持List,DataSet,Datatable 排序
    3. 排序时在Header部分出现图标
    4. 封装了PageIndexChanged 和DataBind,不用每页都写。
    5. 支持SQL分页和ApsNetPager等分页控件。

    注: 没有加入很多的功能,因为本身需要的就是一个轻量级的GridView,产生近可能少的代码。

    另:选择高亮功能是用JQuery实现的,因此使用时需要JQuery的运行库。

    代码1 : 辅助对象,实现Sort排序。(其实这部分功能可以用LINQ来做,会简单很多,当这个类已经用了很久了,懒得改了)

    1 using System;
    2  using System.Collections;
    3  using System.Collections.Generic;
    4 using System.Reflection;
    5
    6 namespace xxWare.xxControls
    7 {
    8 public class Reverser<T> : IComparer<T>
    9 {
    10 private Type _type = null;
    11 private ReverserInfo info;
    12
    13 /// <summary>
    14 /// 构造函数
    15 /// </summary>
    16 /// <param name="type">进行比较的类类型</param>
    17 /// <param name="name">进行比较对象的属性名称</param>
    18 /// <param name="direction">比较方向(升序/降序)</param>
    19 public Reverser(Type _type, string _name, string _direction)
    20 {
    21 this._type = _type;
    22 this.info.name = _name;
    23 this.info.direction = _direction.ToLower();
    24 }
    25
    26 /// <summary>
    27 /// 构造函数
    28 /// </summary>
    29 /// <param name="className">进行比较的类名称</param>
    30 /// <param name="name">进行比较对象的属性名称</param>
    31 /// <param name="direction">比较方向(升序/降序)</param>
    32 public Reverser(string _className, string _name, string _direction)
    33 {
    34 try
    35 {
    36 this._type = Type.GetType(_className, true);
    37 this.info.name = _name;
    38 this.info.direction = _direction.ToLower();
    39 }
    40 catch (Exception e)
    41 {
    42 throw new Exception(e.Message);
    43 }
    44
    45 }
    46
    47 /// <summary>
    48 /// 构造函数
    49 /// </summary>
    50 /// <param name="t">进行比较的类型的实例</param>
    51 /// <param name="name">进行比较对象的属性名称</param>
    52 /// <param name="direction">比较方向(升序/降序)</param>
    53 public Reverser(T _t, string _name, string _direction)
    54 {
    55 this._type = _t.GetType();
    56 this.info.name = _name;
    57 this.info.direction = _direction;
    58 }
    59
    60 int IComparer<T>.Compare(T t1, T t2)
    61 {
    62 object x = this._type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t1, null);
    63 object y = this._type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t2, null);
    64
    65 if (this.info.direction != "asc")
    66 Swap(ref x, ref y);
    67 return (new CaseInsensitiveComparer()).Compare(x, y);
    68 }
    69
    70 void Swap(ref object x, ref object y)
    71 {
    72 object tmp = x;
    73 x = y;
    74 y = tmp;
    75 }
    76 }
    77 public struct ReverserInfo
    78 {
    79 public enum Target
    80 {
    81 Customer = 0,
    82 From,
    83 Field,
    84 Server
    85 }
    86
    87 public string name;
    88 public string direction; // asc , desc ;
    89 public Target target;
    90 }
    91 }

    代码2: Template类,用于生成CheckBox列

    1 using System;
    2 using System.Web;
    3 using System.Web.UI;
    4 using System.Web.UI.WebControls;
    5
    6 namespace xxWare.xxControls
    7 {
    8 #region Selector Template
    9 public class xxGridColumnTemplate : ITemplate
    10 {
    11 public void InstantiateIn(Control container)
    12 {
    13 CheckBox cb = new CheckBox();
    14 cb.ID = "FarGV_ColumnSelector";
    15 cb.ClientIDMode = ClientIDMode.AutoID;
    16 cb.CssClass = "far_rowsselector";
    17 container.Controls.AddAt(0, cb);
    18 }
    19 }
    20
    21 public class xxGridHeaderTemplate : ITemplate
    22 {
    23 public void InstantiateIn(Control container)
    24 {
    25 System.Web.UI.HtmlControls.HtmlInputCheckBox selectAll = new System.Web.UI.HtmlControls.HtmlInputCheckBox();
    26 selectAll.ID = "FarGV_ColumnSelectorAll";
    27 selectAll.ClientIDMode = ClientIDMode.Static;
    28 selectAll.Attributes["onclick"] = "FarGridView_ColumnSelectorAll();";
    29 container.Controls.Add(selectAll);
    30 }
    31 }
    32
    33 #endregion
    34
    35 }

    主代码: 加了一个属性 AutoSort,当使用SQL分页是,设置为 False即可

    001 using System;
    002 using System.Collections.Generic;
    003 using System.ComponentModel;
    004 using System.Data;
    005 using System.Web;
    006 using System.Web.UI;
    007 using System.Web.UI.WebControls;
    008 using System.Reflection;
    009   
    010 namespace xxWare.xxControls
    011 {
    012     [ToolboxData("<{0}:xxGridView runat=server></{0}:xxGridView>")]
    013     public class xxGridView : System.Web.UI.WebControls.GridView
    014     {
    015         #region Properties
    016         // sort image url : full url = Sort_Image_Url + Asc_Image_Name
    017         [Browsable(true) , Category("Sort Image"), DefaultValue("images/arrow_up.gif") , Description("Asc Image")]
    018         public string Asc_Image { get; set; }
    019         [Browsable(true), Category("Sort Image"), DefaultValue("images/arrow_down.gif"), Description("Desc Image")]
    020         public string Desc_Image { get; set; }
    021         [Browsable(true), Category("Sort Image"), DefaultValue("images/arrow_updn.gif"), Description("Sortable Image")]
    022         public string Sort_Image { get; set; }
    023   
    024         //Property : SortExpression
    025         [Browsable(false)]
    026         public string CurrentSortExpression
    027         {
    028             get { return Convert.ToString(ViewState["CurrentSortExpression"]); }
    029             set { ViewState["CurrentSortExpression"] = value.Trim(); }
    030         }
    031         [Browsable(false)]
    032         public string CurrentSortDirection
    033         {
    034             get  { return Convert.ToString(ViewState["CurrentSortDirection"]); }
    035             set
    036             {
    037                 if (string.IsNullOrEmpty(value))
    038                 {
    039                     ViewState["CurrentSortDirection"] = "desc";
    040                 }
    041                 else
    042                 {
    043                     if (value.ToLower() != "asc" && value.ToLower() != "desc")
    044                     {
    045                         ViewState["CurrentSortDirection"] = "desc";
    046                     }
    047                     else
    048                     {
    049                         ViewState["CurrentSortDirection"] = value.ToString().ToLower();
    050                     }
    051                 }
    052             }
    053         }
    054   
    055         //Property : Multi Show CheckBox
    056         [Category("MultiSelect") , DefaultValue("True")]
    057         public bool AllowMultiSelect
    058         {
    059             get { return bool.Parse(ViewState["AllowMultiSelect"].ToString()); }
    060             set { ViewState["AllowMultiSelect"] = value.ToString(); }
    061         }
    062         [Category("MultiSelect"), DefaultValue(0)]
    063         public int AllowMultiSelectColumn
    064         {
    065             get { return Int32.Parse(ViewState["AllowMultiSelectColumn"].ToString()); }
    066             set { ViewState["AllowMultiSelectColumn"] = value.ToString(); }
    067         }
    068         /*
    069         public string RowSelectFilter
    070         {
    071             get { return (string)ViewState["RowSelectFilter"]; }
    072             set { ViewState["RowSelectFilter"] = value.ToString(); }
    073         }
    074          * */
    075         //Property : Get Selected Items
    076         [Browsable(false)]
    077         public List<GridViewRow> MultiSelectedItem
    078         {
    079             get
    080             {
    081                 if (!AllowMultiSelect) return null;
    082   
    083                 List<GridViewRow> selectedRows = new List<GridViewRow>();
    084                 foreach (GridViewRow row in this.Rows)
    085                 {
    086                     CheckBox cb = (CheckBox)row.Cells[AllowMultiSelectColumn].Controls[0];
    087                     if (cb.Checked)
    088                     {
    089                         selectedRows.Add(row);
    090                     }
    091                 }
    092   
    093                 return selectedRows;
    094             }
    095         }
    096   
    097         //Define DataSource
    098         private object sourcedata;
    099         public object DataSetSource
    100         {
    101             get 
    102             {
    103                 if (sourcedata != null)
    104                     return sourcedata;
    105                 else
    106                     return null;
    107             }
    108             set
    109             {
    110                 sourcedata = value as object;
    111             }
    112         }
    113   
    114         //record count: readonly
    115         private int _recordCount = 0;
    116         [Browsable(false)]
    117         public int RecordCount
    118         {
    119             get { return _recordCount; }
    120         }
    121   
    122         //AutoSort : True/False , set to False when use 3rd pager control and Sql Pager , e.g. AspNetPager, DataPager ...
    123         [Browsable(true), Category("Misc"), DefaultValue("True"), Description("Auto Pager")]
    124         public bool AutoSort { get; set; }
    125   
    126         #endregion
    127   
    128         private ClientScriptManager csManager;
    129   
    130         public xxGridView() : base()
    131         {
    132             AllowPaging = false;
    133             AllowSorting = true;
    134   
    135             AutoSort = false;
    136             //GridLines = GridLines.Horizontal;
    137             //BorderWidth = (Unit)0;
    138   
    139             // Sort Images Default
    140             Asc_Image = @"images/arrow_up.gif";
    141             Desc_Image = @"images/arrow_down.gif";
    142             Sort_Image = @"images/arrow_updn.gif";
    143   
    144             //set event handlers
    145             Init += new EventHandler(On_Init);
    146             Sorting += new GridViewSortEventHandler(On_Sorting);
    147             RowCreated += new GridViewRowEventHandler(On_RowCreated);
    148         }
    149   
    150         #region Event Handlers
    151         public event EventHandler GridBindEvent;
    152         public virtual void OnGridBind<T>()
    153         {
    154             if (sourcedata!=null)
    155             {
    156                 if (CurrentSortExpression==string.Empty)
    157                 {
    158                     this.DataSource = sourcedata;
    159                     this.DataBind();
    160                     return;
    161                 }
    162   
    163                 //Datasource Type
    164                 if (sourcedata is DataTable)
    165                 {
    166                     DataView dv = (sourcedata as DataTable).DefaultView;
    167                     if (!string.IsNullOrEmpty(CurrentSortExpression) && AutoSort)
    168                         dv.Sort = CurrentSortExpression + " " + CurrentSortDirection;
    169   
    170                     this.DataSource = dv;
    171                     _recordCount = dv.Count;
    172                     try
    173                     {
    174                         this.DataBind();
    175                     }
    176                     catch 
    177                     {
    178                         if (this.PageIndex>1)
    179                         {
    180                             this.PageIndex--;
    181                             this.DataBind();
    182                         }
    183                     }
    184                       
    185                 }
    186                 else if (sourcedata is DataSet)
    187                 {
    188                     DataView dv = (sourcedata as DataSet).Tables[0].DefaultView;
    189                     if (!string.IsNullOrEmpty(CurrentSortExpression) && AutoSort)
    190                         dv.Sort = CurrentSortExpression + " " + CurrentSortDirection;
    191   
    192                     this.DataSource = dv;
    193                     _recordCount = dv.Count;
    194                     try
    195                     {
    196                         this.DataBind();
    197                     }
    198                     catch
    199                     {
    200                         if (this.PageIndex > 1)
    201                         {
    202                             this.PageIndex--;
    203                             this.DataBind();
    204                         }
    205                     }
    206                 }
    207                 else if (sourcedata is List<T>)
    208                 {
    209                     if (!string.IsNullOrEmpty(CurrentSortExpression) && AutoSort)
    210                     {
    211                         Reverser<T> reverser = new Reverser<T>(typeof(T), CurrentSortExpression, CurrentSortDirection);
    212                         (sourcedata as List<T>).Sort(reverser);
    213                     }
    214   
    215                     this.DataSource = sourcedata;
    216                     _recordCount = (sourcedata as List<T>).Count;
    217                     try
    218                     {
    219                         this.DataBind();
    220                     }
    221                     catch
    222                     {
    223                         if (this.PageIndex > 1)
    224                         {
    225                             this.PageIndex--;
    226                             this.DataBind();
    227                         }
    228                     }
    229                 }
    230             
    231               
    232         }
    233   
    234         public void On_Init(object sender, EventArgs e)
    235         {
    236             // processing multi-select
    237             if (ViewState["AllowMultiSelect"]==null || ViewState["AllowMultiSelect"].ToString().Trim()=="")
    238                 ViewState["AllowMultiSelect"] = "True";
    239             if (ViewState["AllowMultiSelectColumn"] == null || ViewState["AllowMultiSelectColumn"].ToString().Trim() == "")
    240                 ViewState["AllowMultiSelectColumn"] = "0";
    241   
    242             csManager = this.Page.ClientScript;
    243             if (AllowMultiSelect)
    244             {
    245                 AddSelectColumn();
    246                 RegisterJS();
    247             }
    248   
    249             // processing sorting...
    250             if (CurrentSortDirection == null || CurrentSortDirection.Trim() == "")
    251                 CurrentSortDirection = "desc";
    252             if (CurrentSortExpression == null) CurrentSortDirection = "";
    253         }
    254   
    255         public void On_Sorting(object sender , GridViewSortEventArgs e)
    256         {
    257             CurrentSortExpression = e.SortExpression;
    258             if (CurrentSortDirection == "desc")
    259                 CurrentSortDirection = "asc";
    260             else
    261                 CurrentSortDirection = "desc";
    262   
    263             GridBindEvent(this , EventArgs.Empty);
    264         }
    265   
    266         public void On_RowCreated(object sender , GridViewRowEventArgs e)
    267         {
    268             string currentSortImage = "";
    269             if (e.Row.RowType==DataControlRowType.Header)
    270             {
    271                 foreach (DataControlField field in this.Columns)
    272                 {
    273                     if (!String.IsNullOrEmpty(field.SortExpression))
    274                     {
    275                         if (IsSortedByThisField(field.SortExpression))
    276                         {
    277                             currentSortImage = (CurrentSortDirection == "asc") ? Asc_Image : Desc_Image;
    278                         }
    279                         else
    280                         {
    281                             currentSortImage = Sort_Image;
    282                         }
    283                         AddSortImage(e.Row, this.Columns.IndexOf(field), currentSortImage);
    284                     }
    285                 }
    286             }
    287         }
    288   
    289         #endregion
    290   
    291         #region Override Methods
    292         protected override void OnPageIndexChanging(GridViewPageEventArgs e)
    293         {
    294             //base.OnPageIndexChanging(e);
    295             this.PageIndex = e.NewPageIndex;
    296             GridBindEvent(this, EventArgs.Empty);
    297         }
    298         #endregion
    299   
    300         #region private helper function
    301         // For Sort
    302         private void AddSortImage(GridViewRow _row, int _colIndex ,string _currImage)
    303         {
    304             if (-1 == _colIndex) return;
    305   
    306             Image sortImage = new Image();
    307             sortImage.ImageUrl = _currImage;
    308             _row.Cells[_colIndex].Controls.AddAt(1, sortImage);
    309         }
    310   
    311         private bool IsSortedByThisField(String strSortExpression)
    312         {
    313             return CurrentSortExpression.ToLower() == strSortExpression.Trim().ToLower();
    314         }
    315           
    316         // for Multi Select
    317         private void AddSelectColumn()
    318         {
    319             TemplateField tc = new TemplateField();
    320             tc.ItemTemplate = new xxGridColumnTemplate();
    321             tc.HeaderTemplate = new xxGridHeaderTemplate();
    322   
    323             this.Columns.Insert(AllowMultiSelectColumn, tc);
    324         }
    325         private void RegisterJS()
    326         {
    327             /*
    328             System.Resources.ResourceManager rm = new System.Resources.ResourceManager("FarGridView", Assembly.GetExecutingAssembly());
    329             string _script = rm.GetString("js_selectall");
    330   
    331             if (!csManager.IsClientScriptBlockRegistered(this.GetType() , "js_selectall"))
    332             {
    333                 csManager.RegisterClientScriptBlock(this.GetType(), "js_selectall", _script);
    334             }
    335             */
    336   
    337             csManager.RegisterClientScriptResource(this.GetType(), "xxWare.xxControls.xxGridViewJS.js");
    338         }
    339   
    340         #endregion
    341   
    342     }
    343 }

    源码下载(带Demo)

    重新封装了一个 GridView,支持如下功能:

    1. CheckBox选择记录,指定CheckBox的位置
    2. 支持List,DataSet,Datatable 排序
    3. 排序时在Header部分出现图标
    4. 封装了PageIndexChanged 和DataBind,不用每页都写。

    1 using System;
    2  using System.Collections.Generic;
    3  using System.ComponentModel;
    4 using System.Data;
    5 using System.Web;
    6 using System.Web.UI;
    7 using System.Web.UI.WebControls;
    8 using System.Reflection;
    9
    10 namespace xxWare.xxControls
    11 {
    12 [ToolboxData("<{0}:xxGridView runat=server></{0}:xxGridView>")]
    13 public class xxGridView : System.Web.UI.WebControls.GridView
    14 {
    15 #region Properties
    16 // sort image url : full url = Sort_Image_Url + Asc_Image_Name
    17 [Browsable(true) , Category("Sort Image"), DefaultValue("images/arrow_up.gif") , Description("Asc Image")]
    18 public string Asc_Image { get; set; }
    19 [Browsable(true), Category("Sort Image"), DefaultValue("images/arrow_down.gif"), Description("Desc Image")]
    20 public string Desc_Image { get; set; }
    21 [Browsable(true), Category("Sort Image"), DefaultValue("images/arrow_updn.gif"), Description("Sortable Image")]
    22 public string Sort_Image { get; set; }
    23
    24 //Property : SortExpression
    25 [Browsable(false)]
    26 public string CurrentSortExpression
    27 {
    28 get { return Convert.ToString(ViewState["CurrentSortExpression"]); }
    29 set { ViewState["CurrentSortExpression"] = value.Trim(); }
    30 }
    31 [Browsable(false)]
    32 public string CurrentSortDirection
    33 {
    34 get { return Convert.ToString(ViewState["CurrentSortDirection"]); }
    35 set
    36 {
    37 if (string.IsNullOrEmpty(value))
    38 {
    39 ViewState["CurrentSortDirection"] = "desc";
    40 }
    41 else
    42 {
    43 if (value.ToLower() != "asc" && value.ToLower() != "desc")
    44 {
    45 ViewState["CurrentSortDirection"] = "desc";
    46 }
    47 else
    48 {
    49 ViewState["CurrentSortDirection"] = value.ToString().ToLower();
    50 }
    51 }
    52 }
    53 }
    54
    55 //Property : Multi Show CheckBox
    56 [Category("MultiSelect") , DefaultValue("True")]
    57 public bool AllowMultiSelect
    58 {
    59 get { return bool.Parse(ViewState["AllowMultiSelect"].ToString()); }
    60 set { ViewState["AllowMultiSelect"] = value.ToString(); }
    61 }
    62 [Category("MultiSelect"), DefaultValue(0)]
    63 public int AllowMultiSelectColumn
    64 {
    65 get { return Int32.Parse(ViewState["AllowMultiSelectColumn"].ToString()); }
    66 set { ViewState["AllowMultiSelectColumn"] = value.ToString(); }
    67 }
    68 /*
    69 public string RowSelectFilter
    70 {
    71 get { return (string)ViewState["RowSelectFilter"]; }
    72 set { ViewState["RowSelectFilter"] = value.ToString(); }
    73 }
    74 * */
    75 //Property : Get Selected Items
    76 [Browsable(false)]
    77 public List<GridViewRow> MultiSelectedItem
    78 {
    79 get
    80 {
    81 if (!AllowMultiSelect) return null;
    82
    83 List<GridViewRow> selectedRows = new List<GridViewRow>();
    84 foreach (GridViewRow row in this.Rows)
    85 {
    86 CheckBox cb = (CheckBox)row.Cells[AllowMultiSelectColumn].Controls[0];
    87 if (cb.Checked)
    88 {
    89 selectedRows.Add(row);
    90 }
    91 }
    92
    93 return selectedRows;
    94 }
    95 }
    96
    97 //Define DataSource
    98 private object sourcedata;
    99 public object DataSetSource
    100 {
    101 get
    102 {
    103 if (sourcedata != null)
    104 return sourcedata;
    105 else
    106 return null;
    107 }
    108 set
    109 {
    110 sourcedata = value as object;
    111 }
    112 }
    113
    114 #endregion
    115
    116 private ClientScriptManager csManager;
    117
    118 public xxGridView() : base()
    119 {
    120 AllowPaging = false;
    121 AllowSorting = true;
    122 //GridLines = GridLines.Horizontal;
    123 //BorderWidth = (Unit)0;
    124
    125 // Sort Images Default
    126 Asc_Image = @"images/arrow_up.gif";
    127 Desc_Image = @"images/arrow_down.gif";
    128 Sort_Image = @"images/arrow_updn.gif";
    129
    130 //set event handlers
    131 Init += new EventHandler(On_Init);
    132 Sorting += new GridViewSortEventHandler(On_Sorting);
    133 RowCreated += new GridViewRowEventHandler(On_RowCreated);
    134 }
    135
    136 #region Event Handlers
    137 public event EventHandler GridBindEvent;
    138 public virtual void OnGridBind<T>()
    139 {
    140 if (sourcedata!=null)
    141 {
    142 if (CurrentSortExpression==string.Empty)
    143 {
    144 this.DataSource = sourcedata;
    145 this.DataBind();
    146 return;
    147 }
    148
    149 //Datasource Type
    150 if (sourcedata is DataTable)
    151 {
    152 DataView dv = (sourcedata as DataTable).DefaultView;
    153 if (!string.IsNullOrEmpty(CurrentSortExpression))
    154 dv.Sort = CurrentSortExpression + " " + CurrentSortDirection;
    155
    156 this.DataSource = dv;
    157 this.DataBind();
    158 }
    159 else if (sourcedata is DataSet)
    160 {
    161 DataView dv = (sourcedata as DataSet).Tables[0].DefaultView;
    162 if (!string.IsNullOrEmpty(CurrentSortExpression))
    163 dv.Sort = CurrentSortExpression + " " + CurrentSortDirection;
    164
    165 this.DataSource = dv;
    166 this.DataBind();
    167 }
    168 else if (sourcedata is List<T>)
    169 {
    170 if (!string.IsNullOrEmpty(CurrentSortExpression))
    171 {
    172 Reverser<T> reverser = new Reverser<T>(typeof(T), CurrentSortExpression, CurrentSortDirection);
    173 (sourcedata as List<T>).Sort(reverser);
    174 }
    175
    176 this.DataSource = sourcedata;
    177 this.DataBind();
    178 }
    179 }
    180
    181 }
    182
    183 public void On_Init(object sender, EventArgs e)
    184 {
    185 // processing multi-select
    186 if (ViewState["AllowMultiSelect"]==null || ViewState["AllowMultiSelect"].ToString().Trim()=="")
    187 ViewState["AllowMultiSelect"] = "True";
    188 if (ViewState["AllowMultiSelectColumn"] == null || ViewState["AllowMultiSelectColumn"].ToString().Trim() == "")
    189 ViewState["AllowMultiSelectColumn"] = "0";
    190
    191 csManager = this.Page.ClientScript;
    192 if (AllowMultiSelect)
    193 {
    194 AddSelectColumn();
    195 RegisterJS();
    196 }
    197
    198 // processing sorting...
    199 if (CurrentSortDirection == null || CurrentSortDirection.Trim() == "")
    200 CurrentSortDirection = "desc";
    201 if (CurrentSortExpression == null) CurrentSortDirection = "";
    202 }
    203
    204 public void On_Sorting(object sender , GridViewSortEventArgs e)
    205 {
    206 CurrentSortExpression = e.SortExpression;
    207 if (CurrentSortDirection == "desc")
    208 CurrentSortDirection = "asc";
    209 else
    210 CurrentSortDirection = "desc";
    211
    212 GridBindEvent(this , EventArgs.Empty);
    213 }
    214
    215 public void On_RowCreated(object sender , GridViewRowEventArgs e)
    216 {
    217 string currentSortImage = "";
    218 if (e.Row.RowType==DataControlRowType.Header)
    219 {
    220 foreach (DataControlField field in this.Columns)
    221 {
    222 if (!String.IsNullOrEmpty(field.SortExpression))
    223 {
    224 if (IsSortedByThisField(field.SortExpression))
    225 {
    226 currentSortImage = (CurrentSortDirection == "asc") ? Asc_Image : Desc_Image;
    227 }
    228 else
    229 {
    230 currentSortImage = Sort_Image;
    231 }
    232 AddSortImage(e.Row, this.Columns.IndexOf(field), currentSortImage);
    233 }
    234 }
    235 }
    236 }
    237
    238 #endregion
    239
    240 #region Override Methods
    241 protected override void OnPageIndexChanging(GridViewPageEventArgs e)
    242 {
    243 //base.OnPageIndexChanging(e);
    244 this.PageIndex = e.NewPageIndex;
    245 GridBindEvent(this, EventArgs.Empty);
    246 }
    247 #endregion
    248
    249 #region private helper function
    250 // For Sort
    251 private void AddSortImage(GridViewRow _row, int _colIndex ,string _currImage)
    252 {
    253 if (-1 == _colIndex) return;
    254
    255 Image sortImage = new Image();
    256 sortImage.ImageUrl = _currImage;
    257 _row.Cells[_colIndex].Controls.AddAt(1, sortImage);
    258 }
    259
    260 private bool IsSortedByThisField(String strSortExpression)
    261 {
    262 return CurrentSortExpression.ToLower() == strSortExpression.Trim().ToLower();
    263 }
    264
    265 // for Multi Select
    266 private void AddSelectColumn()
    267 {
    268 TemplateField tc = new TemplateField();
    269 tc.ItemTemplate = new FarGridColumnTemplate();
    270 tc.HeaderTemplate = new FarGridHeaderTemplate();
    271
    272 this.Columns.Insert(AllowMultiSelectColumn, tc);
    273 }
    274 private void RegisterJS()
    275 {
    276 /*
    277 System.Resources.ResourceManager rm = new System.Resources.ResourceManager("xxGridView", Assembly.GetExecutingAssembly());
    278 string _script = rm.GetString("js_selectall");
    279
    280 if (!csManager.IsClientScriptBlockRegistered(this.GetType() , "js_selectall"))
    281 {
    282 csManager.RegisterClientScriptBlock(this.GetType(), "js_selectall", _script);
    283 }
    284 */
    285
    286 csManager.RegisterClientScriptResource(this.GetType(), "xxWare.xxControls.xxGridViewJS.js");
    287 }
    288
    289 #endregion
    290
    291 }
    292 }

    还有一些如: MultiSelectFilter 等有时间再完善

  • 相关阅读:
    “指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单
    windows下如何快速优雅的使用python的科学计算库?
    量化分析师的Python日记【第1天:谁来给我讲讲Python?】
    Python的lambda函数与排序
    使用python管理Cisco设备-乾颐堂
    python移除系统多余大文件-乾颐堂
    python算法
    python实现高效率的排列组合算法-乾颐堂
    使用python把图片存入数据库-乾颐堂
    Python将阿拉伯数字转化为中文大写-乾颐堂
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2036094.html
Copyright © 2011-2022 走看看