DataGrid单元格移动变色,点击变色,双击取消颜色,排序.
2008-04-10 05:52
519 查看
实现: 1.当鼠标移动到DataGrid的单元格时,单元格变色,并且单元格里的字体同时变色,鼠标变为手的形状.鼠标移出单元格,恢复原样. 2.当鼠标点击DataGrid的单元格时,单元格变色,单元格上的显示字体变色;当点击另一个单元格时,前一个单元格以及字体颜色恢复原样,此时的单元格变色,字体变色. 3.当双击DataGrid上单击时变色的单元格时,颜色取消,恢复原样. 4.DataGrid按顺序(ASC)和倒序(DESC)排序,并且DataGrid排序的列头显示排序标志. 排序必须注意:列头名必须和排序的字段名一致,否则将不会显示排序标志. DataGrid点击变色的注册事件在dbOrders_ItemDataBound事件中注册. if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem) { e.Item.Attributes.Add("onmouseover","tdOver(this)"); e.Item.Attributes.Add("onmouseout","tdOut(this)"); e.Item.Attributes.Add("onclick","tdColor(this)"); e.Item.Attributes.Add("ondblclick","tdColorDbl(this)"); } 而之间的代码可以保存为JS文件,然后使用即可.
以下例子使用的是NorthWind数据库中的Orders表.
|
|
Html代码:
<%@ Page language="c#" Codebehind="DataGridColor.aspx.cs" AutoEventWireup="false" Inherits="NetTest.DataGridExample.DataGridColor" %>
DataGrid移动,单击变色
| CS代码:
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 System.Data.SqlClient; namespace NetTest.DataGridExample { /// /// DataGridColor 的摘要说明。 /// public class DataGridColor : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid dbOrders; private string strConn=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString(); private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { ViewState["SortExpression"]=""; ViewState["sort"]="desc"; } BindData(); } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.dbOrders.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dbOrders_ItemCreated); this.dbOrders.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.dbOrders_PageIndexChanged); this.dbOrders.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.dbOrders_SortCommand); this.dbOrders.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dbOrders_ItemDataBound); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void BindData() { SqlConnection Conn=new SqlConnection(strConn); SqlCommand Cmd=new SqlCommand("select * from Orders",Conn); SqlDataAdapter da=new SqlDataAdapter(); da.SelectCommand=Cmd; DataSet ds=new DataSet(); Conn.Open(); da.Fill(ds); Conn.Close(); DataTable dt=ds.Tables[0]; if(ViewState["SortExpression"].ToString()!="") { dt.DefaultView.Sort=ViewState["SortExpression"].ToString()+" "+ViewState["sort"].ToString(); } dbOrders.DataSource=dt; dbOrders.DataBind(); } private void dbOrders_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) { string sort=string.Empty; if(ViewState["SortExpression"].ToString()==e.SortExpression.ToString()) { if(ViewState["sort"].ToString()=="asc") { sort="desc"; } else { sort="asc"; } } else { if(ViewState["sort"].ToString()=="asc") { sort="desc"; } else { sort="asc"; } } ViewState["sort"]=sort; ViewState["SortExpression"]=e.SortExpression; BindData(); } private void dbOrders_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemType==ListItemType.Header) { //排序 foreach(TableCell c in e.Item.Cells) { if (c.Controls.Count >0 && c.Controls[0].GetType().ToString()=="System.Web.UI.WebControls.DataGridLinkButton") { if (((LinkButton)c.Controls[0]).Text==(string)ViewState["SortExpression"]) { Label l=new Label(); l.Font.Name="Webdings"; if ((string)ViewState["sort"]=="asc") l.Text="5"; else l.Text="6"; c.Controls.Add(l); } } } } } private void dbOrders_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { dbOrders.CurrentPageIndex=e.NewPageIndex; DataBind(); } private void dbOrders_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem) { e.Item.Attributes.Add("onmouseover","tdOver(this)"); e.Item.Attributes.Add("onmouseout","tdOut(this)"); e.Item.Attributes.Add("onclick","tdColor(this)"); e.Item.Attributes.Add("ondblclick","tdColorDbl(this)"); } } } }
|
|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理