DataTable の内容を表示する DataGridView があります。
この行のセルの値に基づいて、行の背景色を設定したいと考えています。
問題のセルは、DataGridView (Visible=False) に表示されない列にあることに注意してください。
DataTable の内容を表示する DataGridView があります。
この行のセルの値に基づいて、行の背景色を設定したいと考えています。
問題のセルは、DataGridView (Visible=False) に表示されない列にあることに注意してください。
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 で必要な場合はお知らせください。
幸運を!
既に述べたように、RowDataBound; グリッド自体のテキストだけでなく、データ オブジェクトの値も確認できます。
void gridView_DataBound(オブジェクト送信者, GridViewEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { var myObject = (myObject)e.DataItem; if (myObject.IsOverdue()) { e.Row.CssClass = "期限切れ"; } } }
もう 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;
}
}