在gridview中,我试图做到这一点,当用户选中该行被突出显示的行的复选框时。现在,这个GridView是有条纹的(意味着偶数行有一个背景色,奇数行有另一个)。这代码做它以各种形式的净浮...从复选框中突出显示条纹gridview的gridview行
var color = '';
function changeColor(obj) {
var rowObject = getParentRow(obj);
var parentTable = document.getElementById("gvCategories");
if(color == ''){
color = getRowColor();
}
if(obj.checked){
rowObject.style.backgroundColor = 'Yellow';
}
else{
rowObject.style.backgroundColor = color;
color = '';
}
// private method
function getRowColor(){
if(rowObject.style.backgroundColor == '') return parentTable.style.backgroundColor;
else return rowObject.style.backgroundColor;
}
}
// This method returns the parent row of the object
function getParentRow(obj){
do{
obj = obj.parentElement;
}
while(obj.tagName != "TR")
return obj;
}
这是一个直接复制并从这里粘贴... http://aspadvice.com/blogs/azamsharp/archive/2007/06/26/Highlight-GridView-Rows-Using-CheckBox.aspx
这是好的,如果你的GridView没有条纹。但是,正如我前面提到的,我的是有条纹的。这里的问题是,如果取消选中某个框,具体取决于所选项目的排序,那么行背景颜色可以恢复为不正确的颜色。
我试过想做一些算法来做到这一点,但我有幸运。我最初的想法是有一些小窍门,但我很快意识到,要求用户取消选中他们检查项目的相反顺序。
我能想到的是某种检查,如果行索引是奇数还是偶数,和唯一的其他东西,如果它是奇怪恢复到一个特定的颜色,如果它甚至恢复到一个特定的颜色。但是,我不知道如何检查从JavaScript的GridView的具体索引。
我最终将要使用jQuery这使关于JavaScript的使用或不jQuery是罚款的任何建议。有关如何实现这一目标的任何想法?
编辑:所以我仍然没有任何运气,我想我会张贴我现在有。
function highlightRow(object) {
if ($(object).attr("checked") == true) {
alert('is checked!'); // this will fire
$(object).parent('tr').addClass("highlightedRow");
}
else {
alert('is not checked!');
$(object).parent('tr').removeClass("highlightedRow");
}
}
正如有评论说,如果一个项目被选中或不,但是阶级切换似乎并不被应用于我可以告诉。突出显示的行是在CSS文件中应该覆盖的类之后声明的。这是否提供了关于可能出错的额外信息?
我觉得我有一些类似的但我很幸运。如果我基本上已将代码绑定到checkBox单击事件而不是该.rowCheckbox单击事件,是否可以安全地说它仍然可以工作? – Carter 2009-01-23 01:42:35