状況:
BindingList<string[]>
LINQtoSQLクエリから構築されたものをにバインドしようとしていますDataGridView
。
問題:
アイテムが生成された後に変更を加えることができませんDataGridView
-または-不要なフィールドがたくさんありますDataGridView
(使用するコードの反復によって異なります)私はできる限りグーグルで検索し、ほとんどのソリューションを実装しようとしました私はオンラインで役に立たないことを発見しました。
文字列には実際の値に対するパブリックプロパティがないことを私は知っています。私はそれを取得する方法を決定するのに苦労しています(私は問題の一部であると信じています)。
C#
int item = (from p in CurrentConversion.Companies[lbCompanies.SelectedIndex].Modules
where p.ModuleName.Equals(clbModules.SelectedItem)
select p.ModuleId)
.FirstOrDefault();
BindingList<string[]> Data = new BindingList<string[]>((
from p in CurrentConversion.Companies[lbCompanies.SelectedIndex].QuestionAnswers
where p[2].Equals(item)
select new string[] { p[0].ToString(), p[3].ToString() })
.ToList());
dgvQuestions.DataSource = Data;
dgvQuestions.Refresh();
望ましくない動作:
これはバインド後に発生します
質問:
- なぜこうなった?
- どうすれば修正できますか?
追加情報:
どのような追加情報が必要かわかりませんが、要求されたものを提供します。
また、他のコード反復に切り替えると、次のようになります。
int item = (from p in CurrentConversion.Companies[lbCompanies.SelectedIndex].Modules where p.ModuleName.Equals(clbModules.SelectedItem) select p.ModuleId).FirstOrDefault();
var Data = new BindingList<object>((from p in CurrentConversion.Companies[lbCompanies.SelectedIndex].QuestionAnswers where p[2].Equals(item) select new {Question = p[0].ToString(), Answer = p[3].ToString() }).Cast<object>().ToList());
dgvQuestions.DataSource = Data;
dgvQuestions.Refresh();
dgvQuestions.Columns[1].ReadOnly = false;
データは正しく表示されますが、編集したい列を編集できません。