我需要區分兩個連續的單元格。在不同的值上更改單元格顏色 - Gridview
當數據綁定到gridview的值時,如果它們具有不同的值,那麼它們中的每一個都是連續的。
因此,如果在行1中有單元格「ABC」,並且在行2中有單元格「CBA」。
我需要用不同顏色對每個單元格着色。
這樣做的最佳方法是什麼?
我需要區分兩個連續的單元格。在不同的值上更改單元格顏色 - Gridview
當數據綁定到gridview的值時,如果它們具有不同的值,那麼它們中的每一個都是連續的。
因此,如果在行1中有單元格「ABC」,並且在行2中有單元格「CBA」。
我需要用不同顏色對每個單元格着色。
這樣做的最佳方法是什麼?
你可以在gridview的rowdatabound事件上做到這一點。將前一行保留在視圖狀態或會話中,並將其與下一行進行匹配。如果不匹配,則更改顏色,否則不要更改。
這就是所謂的條件格式
您可以在標記
<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">
</asp:GridView>
使RowDataBound事件,並把這個在您的代碼隱藏文件。
protected void RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
if(e.Row.RowIndex == 0) // This is row no.1
if(e.Row.Cells[0].Text == "ABC")
e.Row.Cells[0].BackColor = Color.Red;
if(e.Row.RowIndex == 1) // This is row no.2
if(e.Row.Cells[0].Text == "CBA")
e.Row.Cells[0].BackColor = Color.Green;
}
}
該解決方案通過調整代碼稍微有效。我沒有使用if(e.Row.RowIndex == 0)作爲我的GridView總是返回1行。我還使用了for循環來遍歷gridview中的所有單元格 – 2016-08-03 10:06:20
如果我明白你的意思,你想改變一個單元格的顏色,取決於它的值。 如果這是正確的,你可以嘗試這樣的:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((Label)e.Row.Cells[0].FindControl("ValueHoldingControl").Text == "ABC")
{
//Coloring the cell
}
}
}
添加到你的GridView在頁面OnRowDataBound =「gridView1_DataBinding」的HTML部分。然後添加事件處理程序代碼隱藏:
protected void gridView1_DataBinding(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
var c = e.Row.FindControl("IdOfControl") as Label;
if(c != null)
{
if (c.Text == "ABC")
e.Row.BackColor = GetColor("Gray");
if (c.Text == "BCA")
e.Row.BackColor = GetColor("Green");
}
}
private Color GetColor(string color)
{
return Color.FromName(color);
}
問候,迪馬。
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
}
}
該解決方案的工作原理是使用viewstate獲取最後一行值。謝謝。 – 2010-12-13 11:31:09