repeater 能实现隔行换色,也能实现鼠标悬停效果,但我想同时实现,单击某行,就让这一行处于被选 中状态,整行变为红色。

tiger8000 2012-01-13 02:25:30

repeater 能实现隔行换色,也能实现鼠标悬停效果,但我想同时实现,单击某行,就让这一行处于被选 中状态,整行变为红色。

请看我实现的一部分功能,我只能实现隔行换色和 鼠标悬停效果。



<asp:Repeater ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound" runat="server">
<HeaderTemplate>
<tr bgcolor="#add8e6">
<td height="25" class="tabletitle" align="center">ID</td>
<td class="tabletitle" align="center">状态</td>
<td class="tabletitle" align="center">消缺序号</td>
<td class="tabletitle" align="center">发现时间</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor="#e6e6fa" style="cursor:hand" onmouseover="javascript:this.style.backgroundColor='#FFCC33';" onmouseout="javascript:this.style.backgroundColor='#e6e6fa';" ondblclick="openChild(this,<%#Eval("ID")%>,5)">
<td height="25" align="center"><%#Eval("ID")%></td>
<td><%#CheckState(Convert.ToString(Eval("StateNow")))%> </td>
<td><%#Eval("FlowOrder")%></td>
<td><%#Eval("FindDate")%></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#f5f5dc" style="cursor:hand" onmouseover="javascript:this.style.backgroundColor='#FFCC33';" onmouseout="javascript:this.style.backgroundColor='#f5f5dc';" ondblclick="openChild(this,<%#Eval("ID")%>,5)">
<td height="25" align="center"><%#Eval("ID")%></td>
<td><%#CheckState(Convert.ToString(Eval("StateNow")))%> </td>
<td><%#Eval("FlowOrder")%></td>
<td><%#Eval("FindDate")%></td>
</tr>
</AlternatingItemTemplate>
</asp:Repeater>





我的方法很简单,因为是 repeater ,所以我用了 ItemTemplate 和
AlternatingItemTemplate

在 ItemTemplate 里的行
<tr bgcolor="#e6e6fa" style="cursor:hand" onmouseover="javascript:this.style.backgroundColor='#FFCC33';" onmouseout="javascript:this.style.backgroundColor='#e6e6fa';" ondblclick="openChild(this,<%#Eval("ID")%>,5)">

首先为整行加一背景色 bgcolor="#e6e6fa" ,然后,用onmouseover 实现鼠标效果 用 onmouseout 实现鼠标移开后,恢复这行原来的背景色

,同理 在AlternatingItemTemplate 模板里也是这样实现。


现在就是不知道怎么才能实现 单击某行,就让这一行处于被选 中状态,整行变为红色。
然后,如果单击其它行,则让其它行处于被选 中状态,整行变为红色,让刚才那行恢复原来行的背景色。。




请各位高人帮帮忙!!万分感谢!!
...全文
316 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Trouble___Maker 2012-01-20
  • 打赏
  • 举报
回复
先添加一个Css
<style>.CurrentTr{background-color:red;}</style>

然后给repeter里面的tr加上onclick事件
<tr onclick="SetBack(this);">

<script>
function SetBack(item){
//先循环所有的Tr,删除class属性中的CurrentTr值
//参数this表示的是当前点击的Tr,直接在this上设置class="CurrentTr"就行了
//思路是这样,具体你自己写写看
}
</script>
李小冲 2012-01-19
  • 打赏
  • 举报
回复
onclick,修改所在行的style
  • 打赏
  • 举报
回复
repeater里加一个checkbox不行么?
  • 打赏
  • 举报
回复
你把问题搞复杂了,或者说没有技术层次。

动态改变一行的样式,动态改变其class属性(只是一个名称而已嘛)就行了,不用写一大堆内联样式代码硬编码到这里。你说的三种动作不过就是改变tr的class属性,这写成三条javascript代码显然比我这里的文字要少多了。
zioc2013 2012-01-15
  • 打赏
  • 举报
回复
如果又选中了行2 jquery设置行1 css设为原先css(你可以根据css来判断该给行1赋什么颜色,如果行1的css为css1,你就设置它为css1的颜色)
回头是岸 2012-01-15
  • 打赏
  • 举报
回复
前台js控制吧
zioc2013 2012-01-15
  • 打赏
  • 举报
回复
汗 多费劲啊

我觉得这个用脚本实现更好

建议楼主看看jquery吧

隔行换色:设置 css1 css2。。 css1套给普通item css2套给隔行item

鼠标悬停:css1:hover css2:hover

点击选中:假如选中行1。用jquery来改变行1的css从而改变颜色
zorro911 2012-01-14
  • 打赏
  • 举报
回复
原理不是一样的吗,oncilck或者onmousedown事件
hhh305743261 2012-01-13
  • 打赏
  • 举报
回复
手写的没测试过,也不知道对不对。
hhh305743261 2012-01-13
  • 打赏
  • 举报
回复
var tab=document.getElementById('tableID').getElementsByTagName('tr');
for(var j=0;j<tab.length;j++)
{
var color=j%2==0?'#e6e6fa':'#f5f5dc';//设置奇偶行中td背景色
var td=tab[j].getElementsByTagName('td');
for(var k=0;k<td.length;k++)
{
td[k].backgroundColor=color;
}
}
var td2=t.getElementsByTagName('td');
for(var i=0;i<td2.length;i++)
{
td2[i].backgroundColor='red';//设置选中行中的td背景
}
tiger8000 2012-01-13
  • 打赏
  • 举报
回复
不能 tab[j].backgroundColor='';/取消全部td背景


因为我原来

ItemTemplate 中的行和
AlternatingItemTemplate 中的行,是分别有不同颜色的啊
hhh305743261 2012-01-13
  • 打赏
  • 举报
回复
晕 改需求了
table中加ID t为this

function click(t)//点击
{
var tab=document.getElementById('tableID').getElementsByTagName('td');
for(var j=0;j<tab.length;j++)
{
tab[j].backgroundColor='';/取消全部td背景
}/
var td=t.getElementsByTagName('td');
for(var i=0;i<td.length;i++)
{
td[i].backgroundColor='red';//设置选中行中的td背景
}
}
hhh305743261 2012-01-13
  • 打赏
  • 举报
回复
标签tr中加事件 t为this

function click(t)//点击
{
var td=t.getElementsByTagName('td');
for(var i=0;i<td.length;i++)
{
td[i].backgroundColor='red';
}
}
function out(t)//退出
{
var td=t.getElementsByTagName('td');
for(var i=0;i<td.length;i++)
{
td[i].backgroundColor='';
}
}
tiger8000 2012-01-13
  • 打赏
  • 举报
回复
我知道,同理再为这行 tr 标签

加上

onclick="javascript:this.style.backgroundColor='#ff3333';" 就能实现单击这行变色

但是问题是,我鼠标一移开后,马上这行就触发了 onmouseout ,整行就恢复了原来行的颜色。

我的想法是,单击这行,处于选中状态,变色了以后,在没有单击别的行之前,这个选 中行,不管是 onmouseout 还是 onmouseover 都不变色,

只有单 击了其它行,有其它行处于选中状态了以后,这行才恢复原来颜色。
Im_Sorry 2012-01-13
  • 打赏
  • 举报
回复
可以在后台事件中 来进行判断,如果选择,应该是选中那一行~~~~ ,你给TR加个ID 然后搜索到之后用a什么开头的。添加STYLE属性!!
SomethingJack 2012-01-13
  • 打赏
  • 举报
回复
你既然会移开和移上去怎么不会点击之后- -额 其实直接判断是否触发oncilk事件就可以了
- -

62,067

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧