這篇文章便論述關於如何在GridView隨某行某列值的改變時(這些值是空的或不是空的或是其它某些值等)其背景色及文本顏色也隨之改變的問題
根據某列的值改變其樣式最好的方法是在GridView的DataRowBound事件中想辦法在GridView中的行綁定數據後將立即執行DataRowBound事件DataRowBound事件使用GridViewRowEventargs類作為事件變量通過事件變量你能夠利用GridViewRowEventArgs屬性操作已經綁定數據的行
protected void GridView_RowDataBound(object sender GridViewRowEventArgs e)
{
GridViewRow row = eRow;
}
Row將返回TableRow類中的一個GridViewRow對象
綁定的Row有幾種不同的類型例如DataRow EmptyDataRow Footer Header Pager 和 Separator通過GridView的RowType屬性可以得到當前行的行類型RowType是一組DataControlRow枚舉
看下面的代碼示例檢測GridView列出的行是否為一個標准類型的行
protected void GridView_RowDataBound(object sender GridViewRowEventArgs e)
{
if (eRowRowType == DataControlRowTypeDataRow)
{
//Do something!
}
}
可以使用Row的Cells屬性得到其Cells它將返回一個TableCellCollection對象然後通過TableCellCollection索引得到特定的CellsTableCellcollection索引將返回一個TabelCell對象對應於Row中的一個Cell
protected void GridView_RowDataBound(object sender GridViewRowEventArgs e)
{
if (eRowRowType == DataControlRowTypeDataRow)
{
string value = eRowCells[]Text;
}
}
現在你已經明白了如何得到GridView中某行某列的值那麼根據值的變化改變其樣式就比較容易了以下示例使用 Northwind 數據庫通過檢測第四列(UnitPrice)的值是否大於將其顏色改變為紅色
<%@ Page Language=C#%>
<%@ Import Namespace=SystemDrawing %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML //EN http://wwwworg/TR/xhtml/DTD/xhtmldtd>
<script runat=server>
protected void GridView_RowDataBound(object sender GridViewRowEventArgs e)
{
if (eRowRowType == DataControlRowTypeDataRow)
{
if (DecimalParse(eRowCells[]Text) > )
eRowCells[]BackColor = ColorRed;
}
}
</script>
<html xmlns=http://wwwworg//xhtml >
<head runat=server>
<title>Untitled Page</title>
</head>
<body>
<form id=form runat=server>
<div>
<asp:GridView ID=GridView runat=server DataSourceID=SqlDataSource AutoGenerateColumns=FalseDataKeyNames=ProductIDOnRowDataBound=GridView_RowDataBound>
<Columns>
<asp:BoundField ReadOnly=True HeaderText=ProductID InsertVisible=FalseDataField=ProductID SortExpression=ProductID />
<asp:BoundField HeaderText=ProductName DataField=ProductName SortExpression=ProductName />
<asp:BoundField HeaderText=QuantityPerUnit DataField=QuantityPerUnit SortExpression=QuantityPerUnit />
<asp:BoundField HeaderText=UnitPrice DataField=UnitPrice SortExpression=UnitPrice />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID=SqlDataSource runat=server SelectCommand=SELECT [ProductID] [ProductName] [QuantityPerUnit] [UnitPrice] FROM [Alphabetical list of products] ConnectionString=<%$ ConnectionStrings:AppConnectionString %> />
</div>
</form>
</body>
</html>
From:http://tw.wingwit.com/Article/program/net/201311/15589.html