DataGrid设置如下:
<
asp:DataGrid
id
="faggruppeGrid"
runat
="server"
BorderColor
="Black"
BorderWidth
="1px"
CellPadding
="3"
Width ="300px" HeaderStyle-BackColor ="#7f9db9" HorizontalAlign ="Center" AutoGenerateColumns ="False"
AllowSorting ="True" >
< HeaderStyle BackColor ="#7F9DB9" ></ HeaderStyle >
< Columns >
<!-- 第一列 -->
< asp:TemplateColumn >
< HeaderTemplate >
< asp:LinkButton id ="lbFag" runat ="server" CommandName ="sort" CommandArgument ="Fag" CausesValidation ="False" > Fag </ asp:LinkButton >
< asp:Image Runat ="server" ID ="ImgFag" ImageUrl ="../images/Up.gif" Visible ="False" /> <!-- 箭头图标 -->
</ HeaderTemplate >
< ItemTemplate >
< asp:Label runat ="server" Text ='<%# DataBinder.Eval(Container, "DataItem.Fag") % > ' ID="Label1"/>
</ ItemTemplate >
</ asp:TemplateColumn >
<!-- 第二列 -->
< asp:TemplateColumn >
< HeaderTemplate >
< asp:LinkButton id ="lbNavn" runat ="server" CommandName ="sort" CommandArgument ="Navn" CausesValidation ="False" > Navn </ asp:LinkButton >
< asp:Image Runat ="server" ID ="ImgNavn" ImageUrl ="../images/Up.gif" Visible ="False" />
</ HeaderTemplate >
< ItemTemplate >
< asp:Label runat ="server" Text ='<%# DataBinder.Eval(Container, "DataItem.Navn") % > ' ID="Label2"/>
</ ItemTemplate >
</ asp:TemplateColumn >
<!-- 第三列 -->
< asp:HyperLinkColumn DataNavigateUrlField ="Fag" DataNavigateUrlFormatString ="JavaScript:ReturnFagnummer('{0}');" Text ="Indsæt" />
</ Columns >
</ asp:DataGrid >
Width ="300px" HeaderStyle-BackColor ="#7f9db9" HorizontalAlign ="Center" AutoGenerateColumns ="False"
AllowSorting ="True" >
< HeaderStyle BackColor ="#7F9DB9" ></ HeaderStyle >
< Columns >
<!-- 第一列 -->
< asp:TemplateColumn >
< HeaderTemplate >
< asp:LinkButton id ="lbFag" runat ="server" CommandName ="sort" CommandArgument ="Fag" CausesValidation ="False" > Fag </ asp:LinkButton >
< asp:Image Runat ="server" ID ="ImgFag" ImageUrl ="../images/Up.gif" Visible ="False" /> <!-- 箭头图标 -->
</ HeaderTemplate >
< ItemTemplate >
< asp:Label runat ="server" Text ='<%# DataBinder.Eval(Container, "DataItem.Fag") % > ' ID="Label1"/>
</ ItemTemplate >
</ asp:TemplateColumn >
<!-- 第二列 -->
< asp:TemplateColumn >
< HeaderTemplate >
< asp:LinkButton id ="lbNavn" runat ="server" CommandName ="sort" CommandArgument ="Navn" CausesValidation ="False" > Navn </ asp:LinkButton >
< asp:Image Runat ="server" ID ="ImgNavn" ImageUrl ="../images/Up.gif" Visible ="False" />
</ HeaderTemplate >
< ItemTemplate >
< asp:Label runat ="server" Text ='<%# DataBinder.Eval(Container, "DataItem.Navn") % > ' ID="Label2"/>
</ ItemTemplate >
</ asp:TemplateColumn >
<!-- 第三列 -->
< asp:HyperLinkColumn DataNavigateUrlField ="Fag" DataNavigateUrlFormatString ="JavaScript:ReturnFagnummer('{0}');" Text ="Indsæt" />
</ Columns >
</ asp:DataGrid >
后台处理代码:
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Pensam.Praesentation.BMSWIService;
using Pensam.GenNS;
using Microsoft.ApplicationBlocks.ExceptionManagement;
namespace Pensam.Praesentation.Medarbejder
{
/**//// <summary>
/// Summary description for FaggruppeListe.
/// </summary>
public class FaggruppeListe : BaseWebPage
{
member variables#region member variables
protected System.Web.UI.WebControls.DataGrid faggruppeGrid;
protected System.Web.UI.WebControls.Image ImgArrow = null;
private DataTable dt = null;
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
VisFagGrps();
if(!this.IsPostBack) BindGrid();
//if(this.IsPostBack) Response.Write("post back");
}
Web Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.faggruppeGrid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.faggruppeGrid_SortCommand);
this.faggruppeGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.faggruppeGrid_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private functions#region private functions
//生成绑定数据
private void VisFagGrps()
{
/**//*
using(PSLog logger = new PSLog())
{
try
{
if(this.ServiceDelegate == null) return;
ArrayList list1 = new ArrayList(this.ServiceDelegate.GetFaggruppeListe());
if(list1 == null)
{
this.VisErrorMessage("Get professional category list failed.");
}
}
catch(Exception ex)
{
VisErrorMessage(ex.Message);
ExceptionManager.Publish(ex);
}
}
*/
dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("Fag", typeof(string)));
dt.Columns.Add(new DataColumn("Navn", typeof(string)));
dr = dt.NewRow();
dr["Fag"] = "Fag01000001";
dr["Navn"] = "Fag0101";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag01000002";
dr["Navn"] = "Fag0102";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag01000003";
dr["Navn"] = "Fag0103";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000001";
dr["Navn"] = "Fag0201";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000002";
dr["Navn"] = "Fag0202";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000003";
dr["Navn"] = "Fag0203";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000001";
dr["Navn"] = "Fag0301";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000002";
dr["Navn"] = "Fag0302";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000003";
dr["Navn"] = "Fag0303";
dt.Rows.Add(dr);
}
private void faggruppeGrid_SortCommand(Object sender, DataGridSortCommandEventArgs e)
{
System.Web.UI.Control control = ((DataGridItem)e.CommandSource).FindControl("ImgArrow");
//Response.Write(control.ToString());
ImgArrow = (System.Web.UI.WebControls.Image)control;
string SortField = (string)e.SortExpression;
string oldSortParam = faggruppeGrid.Attributes["SortExpression"];
if(oldSortParam.StartsWith(SortField))
{
//order by the same column.
if(oldSortParam.EndsWith("ASC"))
{
oldSortParam = oldSortParam.Replace("ASC","DESC");
//ImgArrow.ImageUrl = "../Images/Up.gif"; //实践证明在此设置图像行不通,需在ItemDataBound事件中实现。
}
else
{
oldSortParam = oldSortParam.Replace("DESC","ASC");
//ImgArrow.ImageUrl = "../Images/Up.gif"; //实践证明在此设置图像行不通,需在ItemDataBound事件中实现。
}
}
else
{
oldSortParam = SortField + " ASC";
}
faggruppeGrid.Attributes["SortExpression"] = oldSortParam;
BindGrid();
}
//绑定数据
private void BindGrid()
{
//设置初始排序字段
if(faggruppeGrid.Attributes["SortExpression"] == null)
faggruppeGrid.Attributes["SortExpression"] = "Fag ASC";
DataView dv = dt.DefaultView;
//按指定的排序字段排序
dv.Sort = faggruppeGrid.Attributes["SortExpression"];
faggruppeGrid.DataSource = dt;
faggruppeGrid.DataBind();
}
private void faggruppeGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType != ListItemType.Header) return;
//以下获取排序表达式
if(faggruppeGrid.Attributes["SortExpression"]==null) return;
string sortExpression = faggruppeGrid.Attributes["SortExpression"];
string[] orderParams = sortExpression.Split(' ');
//获取Image对象
System.Web.UI.Control control = (e.Item).FindControl("Img" + orderParams[0]);
if(control == null) return;
ImgArrow = (System.Web.UI.WebControls.Image)control;
ImgArrow.Visible = true;
//设置图像Url
if(sortExpression.EndsWith("ASC"))
ImgArrow.ImageUrl = "../Images/Up.gif";
else
ImgArrow.ImageUrl = "../Images/Down.gif";
}
#endregion
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Pensam.Praesentation.BMSWIService;
using Pensam.GenNS;
using Microsoft.ApplicationBlocks.ExceptionManagement;
namespace Pensam.Praesentation.Medarbejder
{
/**//// <summary>
/// Summary description for FaggruppeListe.
/// </summary>
public class FaggruppeListe : BaseWebPage
{
member variables#region member variables
protected System.Web.UI.WebControls.DataGrid faggruppeGrid;
protected System.Web.UI.WebControls.Image ImgArrow = null;
private DataTable dt = null;
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
VisFagGrps();
if(!this.IsPostBack) BindGrid();
//if(this.IsPostBack) Response.Write("post back");
}
Web Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.faggruppeGrid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.faggruppeGrid_SortCommand);
this.faggruppeGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.faggruppeGrid_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private functions#region private functions
//生成绑定数据
private void VisFagGrps()
{
/**//*
using(PSLog logger = new PSLog())
{
try
{
if(this.ServiceDelegate == null) return;
ArrayList list1 = new ArrayList(this.ServiceDelegate.GetFaggruppeListe());
if(list1 == null)
{
this.VisErrorMessage("Get professional category list failed.");
}
}
catch(Exception ex)
{
VisErrorMessage(ex.Message);
ExceptionManager.Publish(ex);
}
}
*/
dt = new DataTable();
DataRow dr;
dt.Columns.Add(new DataColumn("Fag", typeof(string)));
dt.Columns.Add(new DataColumn("Navn", typeof(string)));
dr = dt.NewRow();
dr["Fag"] = "Fag01000001";
dr["Navn"] = "Fag0101";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag01000002";
dr["Navn"] = "Fag0102";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag01000003";
dr["Navn"] = "Fag0103";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000001";
dr["Navn"] = "Fag0201";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000002";
dr["Navn"] = "Fag0202";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag02000003";
dr["Navn"] = "Fag0203";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000001";
dr["Navn"] = "Fag0301";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000002";
dr["Navn"] = "Fag0302";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Fag"] = "Fag03000003";
dr["Navn"] = "Fag0303";
dt.Rows.Add(dr);
}
private void faggruppeGrid_SortCommand(Object sender, DataGridSortCommandEventArgs e)
{
System.Web.UI.Control control = ((DataGridItem)e.CommandSource).FindControl("ImgArrow");
//Response.Write(control.ToString());
ImgArrow = (System.Web.UI.WebControls.Image)control;
string SortField = (string)e.SortExpression;
string oldSortParam = faggruppeGrid.Attributes["SortExpression"];
if(oldSortParam.StartsWith(SortField))
{
//order by the same column.
if(oldSortParam.EndsWith("ASC"))
{
oldSortParam = oldSortParam.Replace("ASC","DESC");
//ImgArrow.ImageUrl = "../Images/Up.gif"; //实践证明在此设置图像行不通,需在ItemDataBound事件中实现。
}
else
{
oldSortParam = oldSortParam.Replace("DESC","ASC");
//ImgArrow.ImageUrl = "../Images/Up.gif"; //实践证明在此设置图像行不通,需在ItemDataBound事件中实现。
}
}
else
{
oldSortParam = SortField + " ASC";
}
faggruppeGrid.Attributes["SortExpression"] = oldSortParam;
BindGrid();
}
//绑定数据
private void BindGrid()
{
//设置初始排序字段
if(faggruppeGrid.Attributes["SortExpression"] == null)
faggruppeGrid.Attributes["SortExpression"] = "Fag ASC";
DataView dv = dt.DefaultView;
//按指定的排序字段排序
dv.Sort = faggruppeGrid.Attributes["SortExpression"];
faggruppeGrid.DataSource = dt;
faggruppeGrid.DataBind();
}
private void faggruppeGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType != ListItemType.Header) return;
//以下获取排序表达式
if(faggruppeGrid.Attributes["SortExpression"]==null) return;
string sortExpression = faggruppeGrid.Attributes["SortExpression"];
string[] orderParams = sortExpression.Split(' ');
//获取Image对象
System.Web.UI.Control control = (e.Item).FindControl("Img" + orderParams[0]);
if(control == null) return;
ImgArrow = (System.Web.UI.WebControls.Image)control;
ImgArrow.Visible = true;
//设置图像Url
if(sortExpression.EndsWith("ASC"))
ImgArrow.ImageUrl = "../Images/Up.gif";
else
ImgArrow.ImageUrl = "../Images/Down.gif";
}
#endregion
}
}