私はまだC#で新しくなっていますが、私はWinformsを使用しており、データソースに接続されているDataGridViewを正しく取得しています。動的に追加されたDataGridViewComboBoxColumnのcomboBoxセルのテキストを変更するにはどうすればよいですか?
また、実行時にComboBoxColumnを追加しました。このComboBoxColumnがデータソースに接続され、displaymemberとvaluememberが設定され、headertextが設定され、次にその列がDataGridに追加されます。接続はうまく動作し、ユーザーがcomboBoxをクリックしたときに期待どおりに入力されます。
ユーザーがグリッド内の新しい行を完了すると、ユーザーは明らかにcomboBox内のアイテムを選択し、完了すると行全体が自分のデータベースに更新されます。
私の質問は:このデータグリッドを再度開いたり、再描画したりすると、データソースプロパティのためにデータが取り込まれますが、コンボボックスのセルに空白のボックスではなく元々選択した値が表示されます。私はDBから値を取得し、値を入れるコードを知っています。理想的なのは、コンボボックスのディスプレイにその変数を配置できるかどうかです。 comboBoxはまだデータバインドされているので、ユーザーは希望すれば値を編集できます。
通常のcomboBoxコントロールでは、.Textプロパティを設定するだけです。しかし、DataGridViewComboBoxには同じプロパティがありません。ここ
は、実際のデータ接続のためのコードであり、comboBoxColumnの追加:
public void AddComboBoxColumn(DataGridView datagridName, DataTable table, string headerText, int columnIndex)
{
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
GetDisplayAndValueMembers(table, headerText); //Calls method that gets the datasource, displaymember, valuemember depending on column
column.DataSource = tableRef; //sets datasource to table referenced by column
column.DisplayMember = displayMember; //sets displaymember
column.ValueMember = valueMember; //sets valuemember
column.HeaderText = headerText; //changes headertext to displayed text
if (newColumnIndex == 0)
datagridName.Columns.Add(column); //added to end of datagrid
else
{
datagridName.Columns.RemoveAt(columnIndex);
datagridName.Columns.Insert(newColumnIndex, column); //added in specific index if needed
}
}
これは単にドロップダウンののdataconnectionを示します。明らかに、大量のコードで多くのメソッドが使用されています。しかし、これは正常に動作するので、問題ではありません。以前に選択したアイテムを実際にcomboBoxのテキストとして表示するという問題については、どうやって解決するのか分かりません。
おそらく関連するコードを表示するために質問を強化しますか? –