列の1つにあるテキストに基づいて、データグリッドビューアの行の色を変更しようとしています。私はエラーを取得しています:最初のifステートメントの行にオブジェクトのインスタンスにオブジェクト参照が設定されていません。私はコードも以下のデータソースに基づいてdatagridviewerを埋めました。列内のテキストに基づいて行の色を変更します。
void ChangeDataGridViewColor()
{
foreach (DataGridViewRow Row in datagridviewTreatmentPrep.Rows)
{
if (Row.Cells["Primary Onc"].Value.ToString() == "JMK")
{
Row.DefaultCellStyle.BackColor = Color.Green;
}
if (Row.Cells["Primary Onc"].Value.ToString() == "DBF")
{
Row.DefaultCellStyle.BackColor = Color.Orange;
}
else
{
Row.DefaultCellStyle.BackColor = Color.White;
}
}
}
void FillDataGridViewTreatmentPrep()
{
string constring = "datasource = RadOncViewerDatabase.db";
string TreatPrepQuery = "SELECT * FROM TreatmentPrep";
SQLiteConnection connectionstring = new SQLiteConnection(constring);
connectionstring.Open();
DataTable dsTreatPrep = new DataTable();
SQLiteDataAdapter adapterTreatPrep = new SQLiteDataAdapter(TreatPrepQuery, constring);
adapterTreatPrep.Fill(dsTreatPrep);
datagridviewTreatmentPrep.DataSource = dsTreatPrep;
//datagridviewTreatmentPrep.BindingContext = new BindingContext();
//this.datagridviewTreatmentPrep.DataSource = dsTreatPrep.Tables[0].DefaultView.ToTable(true, "Patient_Name");
}
あなたは 'Row.Cells [ "プライマリONC"]よろしいです[値]がnullではありませんか。?あなたは行が存在することを知っています...しかし、その価値はないかもしれません。 – JohnG
はい。列名の値はPrimary Oncです。私は、混乱は、データセットでデータグリッドビューアを塗りつぶしたこと、そしてカラムを適切に参照していないという事実にあります。 – LitteringAnd
コードをステップ実行し、 'Primary Onc'と呼ばれる列がない場合、' dsTreatPrep'にどの列名が含まれているかを確認します。 – JohnG