您的位置:首页 > 编程语言

DataGrid中实现鼠标移入移出变色,且选择再变色,取消选择恢复原色,且原色隔行不一样的代码...

2008-11-05 17:47 453 查看
1、首先在DataGrid的定义中,实现隔行背景颜色不一样:
<asp:datagrid id="DataGrid1" ...... BackColor="LightGoldenrodYellow">
<AlternatingItemStyle BackColor="#ececec"></AlternatingItemStyle>
.........
</asp:datagrid>

2、在DataGrid的ItemDataBound事件中,实现鼠标移入移出变色:
if(e.Item.ItemType!=ListItemType.Header)
{
e.Item.Attributes.Add( "onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='#C1D2EE'");
e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=currentcolor");
}

3、我这里选择某行,用的是html控件checkbox,它定义在DataGrid的模板列中:
<Columns>
<asp:TemplateColumn HeaderText="<input type='checkbox' title='选择全部' id='cbSelect' onclick='selectAll(this);'>">
<ItemTemplate>
<input id="SelectedID" runat="server" type="checkbox" onclick="AddRemovevalues(this)" value='<%#DataBinder.Eval(Container.DataItem,"myid")%>'>
</ItemTemplate>
</asp:TemplateColumn>
........
</Columns>

4、点击checkbox调用JS函数AddRemovevalues(this):
function AddRemovevalues(oChk) {
var ys;
if(oChk.checked)
{
//Form1.HdnSelectedvalues.value += "," + oChk.value; //这里原本是用来跨页选择的
currentcolor='Violet';
}
else
{
//Form1.HdnSelectedvalues.value = Form1.HdnSelectedvalues.value.replace("," + oChk.value,""); //同上,不用可取消...
var n=oChk.name.replace("DataGrid1:_ctl","").replace(":SelectedID","");
if ((n % 2)==0)
{currentcolor='#ececec';}
else
{currentcolor='LightGoldenrodYellow';}
}
}

如果要实现鼠标在行内直接点击,就变色,不通过checkbox选择的话:

在e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=currentcolor");上面,插入语句:
e.Item.Attributes.Add( "onclick","AddRemovevalues()");

另外,注意这句:
oChk.name.replace("DataGrid1:_ctl","").replace(":SelectedID","")
其中DataGrid1为你的DataGrid的ID,SelectedID为checkbox的ID !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐