完成功能是DataGrid的页面选中事件、鼠标事件、双击事件改变TR的色彩。代码很简单,只是一点JS操作。
JS文件:GridControl.js
=============================
/*------------ DataGrid鼠标事件处理 ------------
功能:用于数据梆定后鼠标事件
参数说明:
obj:对像this
fontColor:字体颜色
backColor:背景颜色
----------------------------------------------*/
var objState
//------------鼠标经过时-----------
function OnFoucsMouseOver( obj,fontColor,backColor )
{
if ( obj.rowIndex > 0 )
{
obj.style.color = fontColor;
obj.style.backgroundColor = backColor;
}
}
//-----------鼠标离开时-----------
function OnFoucsMouseOut( obj,fontColor,backColor )
{
if ( obj.rowIndex > 0 )
{
if ( obj != objState )
{
obj.style.color = fontColor;
obj.style.backgroundColor = backColor;
}
}
}
//-----------鼠标单击时-----------
function OnFoucsClick( obj,fontColor,backColor )
{
if ( obj.rowIndex > 0 )
{
if ( objState != null )
{
objState.style.color = "";
objState.style.backgroundColor = "";
}
obj.style.color = fontColor;
obj.style.backgroundColor = backColor;
objState = obj;
}
}
//-----------鼠标双击时-----------
function OnFoucsDbClick( obj,fontColor,backColor,openUrl )
{
//参数openUrl为要开的新窗口的地址
if ( obj.rowIndex > 0 )
{
if ( objState != null )
{
objState.style.color = "";
objState.style.backgroundColor = "";
}
obj.style.color = fontColor;
obj.style.backgroundColor = backColor;
objState = obj;
window.open( openUrl );
}
}
==========================================
后台数据梆定例子:
==========================================
private void dgList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//
if ( e.Item.ItemIndex != -1 )
{
e.Item.Attributes.Add( "onMouseOver","OnFoucsMouseOver(this,'#FFFFFF','#000000');" );
e.Item.Attributes.Add( "onMouseOut","OnFoucsMouseOut(this,'#000000','#FFFFFF');" );
e.Item.Attributes.Add( "onClick","OnFoucsClick( this,'#FFFFFF','#000000' );" );
e.Item.Attributes.Add( "onDblClick","OnFoucsDbClick( this,'#FFFFFF','#000000','about:bank' );" );
}
}
==========================================
前台.aspx页面调用JS文件:
<script language="javascript" src="GridControl.js" type="text/javascript"></script> <script language="javascript" src="GridControl.js"></script>
当使用分页功能的时候,点下页就触发PageIndexChanged事件,所以要在这下面加点东东!!
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;//判断当前页码是多少?并传入下页的页码
this.binder();//这个是做了一个绑定方法,这里只是调用绑定
}
private void LinkButton1_Click(object sender, System.EventArgs e)
{
int i=Convert.ToInt32(this.TextBox1.Text);//这个列是从TextBox1传入的
this.DataGrid1.Columns[i].Visible=false;
this.binder();
}
private void DataGrid1_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","c=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");//鼠标悬停,读取背景色,再把新色换成#6699ff
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=c;");//鼠标离开,把背景给换回去
}
}
如果你不是很无聊的话,最好把datagrid的高和宽取消了,只是单独给里面的项设置高度或者宽度,否则会出现一些地球人都不想看见的问题!
此代码实现了以下功能:
1.当鼠标在DataGrid上移动时行变化背景色;
2.单击DataGrid行弹出提示窗体;
3.当鼠标放在DataGrid上时鼠标样式变为"hand"样式。
在DataGrid控件的项绑定事件中写入以下代码:
private void DataGrid1_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", "this.style.backgroundColor='Bisque'");
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='White'");
e.Item.Style["cursor"] = "hand";
e.Item.Attributes.Add("onclick", "alert(/"This row's Product Name: " + e.Item.Cells[0].Text + "/");");
}
}