GridViewHelper.cs
出自ProgWiki
GridViewHelper.cs,模組化,用以簡化一些GridView相關的共用的Code
- setDataRowStyle setDataRowStyle需配合 jQuery 與自訂的CSS使用(tr.Row1 、 tr.Row2 、 tr.RowOver)
using System; using System.Collections.Generic; using System.Data; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; /// <summary> /// GridViewHelper 的摘要描述 /// </summary> public class GridViewHelper { public GridViewHelper() { // // TODO: 在此加入建構函式的程式碼 // } public static void setHeaderStyle(object sender, GridViewRowEventArgs e) { e.Row.CssClass="RowHead"; int index = e.Row.Cells.Count; Literal Literal1 = new Literal(); Literal1.EnableViewState = false; Literal1.Text = e.Row.Cells[index - 1].Text +"</th></tr><tr>"; e.Row.Cells[index - 1].Controls.Add(Literal1); e.Row.Cells.Add(new TableHeaderCell()); e.Row.Cells[index].Attributes.Add("colspan", index.ToString()); e.Row.Cells[index].Style.Add(HtmlTextWriterStyle.Height, "5px"); e.Row.Cells[index].Style.Add(HtmlTextWriterStyle.BackgroundColor, "#FFFFFF"); } public static void setDataRowStyle(object sender, GridViewRowEventArgs e) { e.Row.Style.Add(HtmlTextWriterStyle.Height, "35px"); //自動變色機制 if (e.Row.RowIndex % 2 == 1) { //單數資料列 e.Row.CssClass="Row1"; e.Row.Attributes.Add("onmouseout", "$(this).addClass('Row1').removeClass('RowOver');"); e.Row.Attributes.Add("onmouseover", "$(this).addClass('RowOver').removeClass('Row1');"); } else { //雙數資料列 e.Row.CssClass = "Row2"; e.Row.Attributes.Add("onmouseout", "$(this).addClass('Row2').removeClass('RowOver');"); e.Row.Attributes.Add("onmouseover", "$(this).addClass('RowOver').removeClass('Row2');"); } } public static void setSorting(object sender, GridViewSortEventArgs e, StateBag ViewState) { //以下的code出自 // http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/932a0f2b-f777-4621-950a-6ed3d7c39139 GridView GridView1 = sender as GridView; if (ViewState["SortDirection"] == null) { ViewState["SortDirection"] = SortDirection.Descending; } for (int i = 0; i <= ((GridView)sender).Columns.Count - 1; i++) { string strHeaderText = GridView1.Columns[i].HeaderText; strHeaderText = strHeaderText.Replace("▲", "").Replace("▼", ""); GridView1.Columns[i].HeaderText = strHeaderText; } int Columns_i = 0; for (int i = 0; i <= GridView1.Columns.Count - 1; i++) { if (e.SortExpression == GridView1.Columns[i].SortExpression) { Columns_i = i; if (ViewState["SortDirection"].ToString() == SortDirection.Ascending.ToString()) { e.SortDirection = SortDirection.Descending; GridView1.Columns[i].HeaderText = GridView1.Columns[i].HeaderText + "▼"; ViewState["SortDirection"] = SortDirection.Descending; } else { e.SortDirection = SortDirection.Ascending; GridView1.Columns[i].HeaderText = GridView1.Columns[i].HeaderText + "▲"; ViewState["SortDirection"] = SortDirection.Ascending; } } } //補上必要的code ViewState["SortField"] = e.SortExpression; } public static void setDataBinding(GridView GridView1, SqlDataSource SqlDataSource1, StateBag ViewState) { using (DataView dv = SqlDataSource1.Select(new DataSourceSelectArguments()) as DataView) { if ((ViewState["SortDirection"] == null) || (ViewState["SortField"] == null)) { GridView1.DataSource = dv; GridView1.DataBind(); } else { //using (DataView dv = ds.Tables[0].DefaultView) { string strSort = ViewState["SortField"].ToString(); if (ViewState["SortDirection"].ToString() == SortDirection.Descending.ToString()) strSort += " DESC"; dv.Sort = strSort; GridView1.DataSource = dv; GridView1.DataBind(); } } } } }