3

DataTable の内容を表示する DataGridView があります。

この行のセルの値に基づいて、行の背景色を設定したいと考えています。

問題のセルは、DataGridView (Visible=False) に表示されない列にあることに注意してください。

4

3 に答える 3

2

RowDataBound イベントを処理すると、データの値を確認して、セルの属性を変更したり、そのイベント ハンドラーで別のスタイルを適用したりできます。

protected void Page_Load(object sender, EventArgs e)
{
    GridView g1 = new GridView();
    g1.RowDataBound += new GridViewRowEventHandler(g1_RowDataBound);
}

void g1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        // Check the Value
        if(e.Row.Cells[1].Text = someValue)
        {
            e.Row.Cells[1].CssClass = "colorCellRed";
        }

    }
}

それはあなたが探しているものをあなたに与えるはずです。C# ではなく VB で必要な場合はお知らせください。

幸運を!

于 2008-10-10T11:44:38.950 に答える
2

既に述べたように、RowDataBound; グリッド自体のテキストだけでなく、データ オブジェクトの値も確認できます。

void gridView_DataBound(オブジェクト送信者, GridViewEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    var myObject = (myObject)e.DataItem;
    if (myObject.IsOverdue())
    {
      e.Row.CssClass = "期限切れ";
    }
  }
}
于 2008-10-10T11:49:39.907 に答える
1

もう 1 つのオプションは、CellFormatting イベントを使用することです。最初のオプションは、バインドされたデータ項目へのアクセスを示しており、問題のデータに対して列が設定されていない場合に役立ちます。2 番目のオプションは、列が表示されているかどうかに関係なく、列がある場合に機能します。

    private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (((MyDataObject)dataGridView.Rows[e.RowIndex].DataBoundItem).Condition == Value)
            {
                e.CellStyle.BackColor = System.Drawing.Color.Gold;

            }
        }

// オプション 2 -- ColumnName の代わりに ColumnIndex を使用できます

    private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dataGridView["ColumnName", e.RowIndex].Value).Condition == TargetValue)
            {
                e.CellStyle.BackColor = System.Drawing.Color.Gold;

            }
        }
于 2010-07-14T14:03:41.997 に答える