フォームはDGVで、linq2sqlクラスを使用してデータベースから情報を読み込みます。 LINQ要求は次のように、あります:linqクエリの結果としてDataGridViewを再描画する方法
private void button1_Click_1(object sender, EventArgs e)
{using (linqWorkDataContext db = new linqWorkDataContext())
{
var regi = (from r in db.Registrs.ToList()
group r by new
{
Date = checkBox1.Checked ? (DateTime?)r.date : (DateTime?)null,
Company = checkBox2.Checked ? r.company : null,
City = checkBox3.Checked ? r.city : null,
Country = checkBox4.Checked ? r.country : null,
Manager = checkBox5.Checked ? r.manager : null,
} into g
select new
{
Date = checkBox1.Checked ? (DateTime?)g.Key.Date : (DateTime?)null,
Company = checkBox2.Checked ? g.Key.Company : null,
City = checkBox3.Checked ? g.Key.City : null,
Country = checkBox4.Checked ? g.Key.Country : null,
Manager = checkBox5.Checked ? g.Key.Manager : null,
Quantity = checkBox1.Checked || checkBox2.Checked || checkBox3.Checked || checkBox4.Checked || checkBox5.Checked ? g.Sum(s => s.quantity) : null,
Amount = checkBox1.Checked || checkBox2.Checked || checkBox3.Checked || checkBox4.Checked || checkBox5.Checked ? g.Sum(s => s.amount) : null,
}).Distinct();
registrDataGridView.DataSource = regi.ToList();
}
}
彼の仕事の結果は、最初のスクリーンショットに示されています。ユーザーは必要な項目を選択し、金額と数量を表示します。 問題は、選択したフィールドのみが表示されることです(空のフィールドが画面に表示されます)。つまり、ユーザーが日付と会社を選択すると、日付、会社、数量、金額が表示され、それ以外はすべて失われました。 2番目の画面では、会社フィールドが選択されています。これは達成したいことです。 (他のプロジェクトと別の実装の画面) どうすればいいですか?
この文字列のすべてでオブジェクト参照がオブジェクトのインスタンスを指していません。 registrDataGridView.Columns ["Date"]。Visible = checkBox1.Checked;など... – SoftySh
ビット奇妙な、私はVS2016で自分自身をテストし、それは正常に働いた。インデックスを使用してそれが機能するかどうか試してみることはできますか? – Chawin
インデックスが同じエラー – SoftySh