私はまだC#に少し慣れていませんが、Winformsを使用しており、データソースに接続され、正しく入力されているDataGridViewを持っています。
実行時に ComboBoxColumn も追加しました。この ComboBoxColumn はデータソースに接続され、displaymember と valuemember が設定され、headertext が設定されてから、列がデータグリッドに追加されます。接続は正常に機能し、ユーザーがクリックすると、コンボボックスが期待どおりに設定されます。
ユーザーがグリッド内の新しい行を完了すると、明らかにコンボ ボックス内の項目が選択され、完了時に行全体がデータベースに更新されます。
私の質問は次のとおりです。このデータグリッドが再度開かれたり再描画されたりすると、データソース プロパティが原因でデータが入力されますが、空白のボックスではなく、最初に選択した VALUE をコンボボックス セルに表示するにはどうすればよいですか。DBから値を取得して値を入れるコードを知っています。その変数をコンボボックスの表示に入れることができれば理想的です。ユーザーが必要に応じて値を編集できるように、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
}
}
これは、ドロップダウンのデータ接続を示しているだけです。明らかに、大量のコードで使用されている多くのメソッドがあります。しかし、これは問題なく機能するため、これは問題ではありません。以前に選択したアイテムをコンボボックスのテキストとして実際に表示するという問題についてどうすればよいかわかりませんか?