5

列を含む GridView を持っていますID

2 つの列を含む DataTable があります

ID
DONE

IDDataTable の列を GridView にバインドしています。いいえまでは大丈夫です。

DONEしかし今、DataTableの列の値に基づいて GridView 行の背景色を設定する必要があります (DONE値がtrue行の背景色の場合は変更する必要があります)。

DONERow を GridView にバインドせずにこれを達成するにはどうすればよいですか??

4

4 に答える 4

8

GridView1_RowDataBoundGridView のイベントを作成します。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    //Check your condition here
    //Get Id from here and based on Id check value in the 
    //underlying dataSource Row where you have "DONE" column value
    // e.g.
    // (gridview.DataSource as DataTable), now you can find your row and cell 
    // of "Done"
    If(Condition True)
    {
        e.Row.BackColor = Drawing.Color.Red;  // your color settings 
    }
}

コードスニペットの例:

protected void EmployeeAvailabilityGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
               if (e.Row.RowType == DataControlRowType.DataRow)
                {                  
                    if(Convert.ToBoolean(DataBinder.Eval(e.Row.DataItem, "DONE")))
                    {
                        e.Row.BackColor = System.Drawing.Color.LightPink;
                    }
                }
            }
            catch (Exception ex)
            {
                //ErrorLabel.Text = ex.Message;
            }
        }

より詳細な実装については、次のリンクを参照してください:
条件に基づいて GridView の行の色を変更する

: その行が DataSource に存在しない場合は、他の場所からそれを取得するためのロジックが必要です。ID別のテーブルに外部キーとして持っている可能性があります。

于 2012-10-31T08:09:43.500 に答える
2

このリンクはあなたを助けるかもしれません

http://deepak-sharma.net/2012/01/27/how-to-change-the-background-color-of-rows-in-a-gridview-based-on-the-value-of-a-列-asp-net-3-5/

if (e.Row.RowType == DataControlRowType.DataRow)
    {
            // determine the value of the UnitsInStock field
            if((DataBinder.Eval(e.Row.DataItem,"strShift")).ToString() =="Alarm")
            {
                    // color the background of the row yellow
                    e.Row.BackColor = Color.Yellow;
            }
于 2013-02-20T04:17:11.787 に答える
0

私も自分の状態を解決しました。ただし、代替行タイプの場合、背景色は設定されていません。

       if (e.Row.RowType == DataControlRowType.DataRow)
        {
          Label LabelStatus = (Label)e.Row.FindControl("lblStatus");
            if(LabelStatus.Text.Trim().ToLower().Equals("inactive"))
            {
                e.Row.BackColor = System.Drawing.Color.Gray;
            }                   

        }

考えられる原因を教えてください。

于 2013-01-28T14:03:50.317 に答える
0

GridView の MyGridView _RowDataBound イベントを作成します。

if (e.Row.RowType = DataControlRowType.DataRow)
{
    //Check your condition here, Cells[1] for ex. is DONE/Not Done column 
    If(e.Row.Cells[1].Text == "DONE")
    {
        e.Row.BackColor = Drawing.Color.Green // This will make row back color green
    }
}
于 2012-10-31T08:11:51.893 に答える