重写了一下GridView控件,实现两个功能:1.鼠标移动到数据行变色2.双击数据行带指定参数到另一个页面.
ps:鼠标移动到数据行变色本来准备用class来指定参数的,但是这个和我页面上的皮肤冲突了,因为皮肤也是绑定的css实现的,所以最后考虑默认一个颜色,如有改变需要,直接指定一个颜色,而不使用css
双击数据行带指定参数到另一个页面, 可以通过诸如:1,4,6....将其cell[1],cell[4],cell[6]...带到其他页面
重写了一下GridView控件,实现两个功能:1.鼠标移动到数据行变色2.双击数据行带指定参数到另一个页面.
ps:鼠标移动到数据行变色本来准备用class来指定参数的,但是这个和我页面上的皮肤冲突了,因为皮肤也是绑定的css实现的,所以最后考虑默认一个颜色,如有改变需要,直接指定一个颜色,而不使用css
双击数据行带指定参数到另一个页面, 可以通过诸如:1,4,6....将其cell[1],cell[4],cell[6]...带到其他页面
另外需要在重写完后重新调用基类的构造函数,否则在无法执行基类事件;如果没有调用基类构造函数的话还有一个缺点就是在ide的设计界面修改控件属性将变得非常慢
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace SeyonControls.StrongGridView
{
[DefaultProperty("Text")]
[ToolboxData(@"<{0}:StrongGridView runat=server></{0}:StrongGridView>")]
public class StrongGridView : GridView
{
定义扩展属性#region 定义扩展属性
//鼠标移动到行上改变颜色的class变量
private string _ColorMouseOver;
//双击数据行转到页面名称变量
private string _DblClickPage;
//双击数据行转到的页面所带url参数所处列序号变量
private string _UrlPara;
[Category("扩展属性")]
[Description("鼠标移动到行上改变颜色的名称")]
public virtual string ColorMouseOver
{
get { return _ColorMouseOver; }
set { _ColorMouseOver = value; }
}
[Category("扩展属性")]
[Description("双击数据行转到的页面")]
public virtual string DblClickPage
{
get { return _DblClickPage; }
set { _DblClickPage = value; }
}
[Category("扩展属性")]
[Description("双击数据行转到的页面所带url参数所处列序号(多个参数以逗号分隔)")]
public virtual string UrlPara
{
get { return _UrlPara; }
set { _UrlPara = value; }
}
#endregion
protected override void OnRowCreated(GridViewRowEventArgs e)
{
鼠标移动到数据行变色功能#region 鼠标移动到数据行变色功能
ColorMouseOver = (!string.IsNullOrEmpty(ColorMouseOver)) ? ColorMouseOver : "#D8E6FA";
if (e.Row.RowType == DataControlRowType.DataRow)
{
//添加鼠标移动到数据行变为手型属性
e.Row.Attributes.Add("style", "CURSOR: hand");
/**/////添加onmouseover属性
//e.Row.Attributes.Add("onmouseover", "this.className = '" + this._cssClassMouseOver + "'");
/**/////添加onmouseout属性
//e.Row.Attributes.Add("onmouseout", "this.className = 'over1'");
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='" + ColorMouseOver + "'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
}
base.OnRowCreated(e);
#endregion
}
protected override void OnRowDataBound(GridViewRowEventArgs e)
{
双击数据行转向功能#region 双击数据行转向功能
if (e.Row.RowType == DataControlRowType.DataRow)
{
//如果UrlPara属性没有设定的话不执行
if (!String.IsNullOrEmpty(UrlPara))
{
string[] strpara = UrlPara.Split(',');
//组合转向js代码段,形成规则xxx.aspx?para1=xxx¶2=xxx.
string tempstr = "javascript:document.location.href='" + DblClickPage + ".aspx?para1=" + e.Row.Cells[Convert.ToInt32(strpara[0])].Text + "";
for (int i = 1; i < strpara.Length; ++i)
{
tempstr = tempstr + "¶" + (i + 1) + "=" + e.Row.Cells[Convert.ToInt32(strpara[i])].Text + "";
}
tempstr = tempstr + "';";
//添加数据行双击属性
e.Row.Attributes.Add("ondblclick", tempstr);
}
}
base.OnRowDataBound(e);
#endregion
}
}
}