2つの連続するセルを区別する必要があります。
値がグリッドビューにデータバインドされるときに、値が異なる場合は、行に1つずつ。
したがって、行1にセル「ABC」があり、行2にセル「CBA」がある場合。
各セルを異なる色で着色する必要があります。
それを行うための最良の方法は何ですか?
グリッドビューのrowdataboundイベントでそれを行うことができます。前の行をビューステートまたはセッションに保持し、次の行と一致させます。一致しない場合は色を変更し、そうでない場合は変更しないでください。
これは条件付き書式と呼ばれます
マークアップでRowDataBoundイベントを有効にできます
<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">
</asp:GridView>
そして、これをコードビハインドファイルに入れます。
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;
}
}
ページOnRowDataBound = "gridView 1DataBinding"の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);
}
よろしく、ディマ。
私があなたを正しく理解しているなら、あなたはその値に応じてセルの色を変えたいと思うでしょう。それが正しければ、次のように試すことができます。
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
}
}
}
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
}
}