web-dev-qa-db-ja.com

異なる値でセルの色を変更する-Gridview

2つの連続するセルを区別する必要があります。

値がグリッドビューにデータバインドされるときに、値が異なる場合は、行に1つずつ。

したがって、行1にセル「ABC」があり、行2にセル「CBA」がある場合。

各セルを異なる色で着色する必要があります。

それを行うための最良の方法は何ですか?

9
Filipe Costa

グリッドビューのrowdataboundイベントでそれを行うことができます。前の行をビューステートまたはセッションに保持し、次の行と一致させます。一致しない場合は色を変更し、そうでない場合は変更しないでください。

1
sam

これは条件付き書式と呼ばれます

マークアップで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;
    }
}
14
Kenan D

ページ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);
    }

よろしく、ディマ。

4
Dima Shmidt

私があなたを正しく理解しているなら、あなたはその値に応じてセルの色を変えたいと思うでしょう。それが正しければ、次のように試すことができます。

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
        }
    }
}
2
chris vietor
void gvShowFullDetail_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml("#AECD6F");
        }
    }
0