Highlighting GridView rows using onmouseover, onclick and using checkbox are all similar features. All are pretty simple to implement. The main problem rises when using the same technique on a GridView with alternate rows with different color. Let's check out how this can be done. 
First, here is the HTML code for the GridView control. 
<asp:GridView ID="gvCategories" runat="server" AutoGenerateColumns="False" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None">

<Columns>

<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" onclick="changeColor(this)" />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblCategoryName" runat="server" Text='<%# Eval("CategoryName") %>' />
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:Label ID="lblDescription" runat="server" Text='<%# Eval("Description") %>' />
</ItemTemplate>
</asp:TemplateField>

</Columns>
<FooterStyle BackColor="Tan" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<AlternatingRowStyle BackColor="PaleGoldenrod" />

</asp:GridView> 
The ChangeColor function is fired whenever a checkbox is clicked. 
One important point to note about Alternate rows is that there is no color assigned to them. They get the color from the style property of the table. In other words we only assign the style to the even numbered rows. 

<script language="javascript" type="text/javascript">...
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; 
}

</script>

本文介绍了一种在ASP.NET GridView控件中实现行高亮的方法,尤其针对带有交替颜色行的情况。通过使用JavaScript来改变选中复选框所在行的颜色,并在取消选择时恢复原始颜色。
256

被折叠的 条评论
为什么被折叠?



