私には非常に些細な要件があり、気が狂ってしまいます。WindowsフォームアプリケーションにDataGridViewがあります。これには、データバインドされた ComboBox 列が 1 つ含まれます。そのコンボボックスの DisplayMember プロパティと ValueMember プロパティを使用しています。
私の要件は、ComboBoxがドロップダウンリストにDisplayMembersのリストを表示する必要があることですが、ユーザーがそこから1つのアイテムを選択すると、そのDisplayMemberの一部をユーザーに表示されるコンボボックスセルに表示する必要があります。例えば。
私の表示メンバーリストは次のようになります。
「Cust1 - 顧客 1」 「Cust2 - 顧客 2」 「Cust3 - 顧客 3」
ユーザーが上記のリストからいずれかを選択すると (たとえば、ユーザーが「Cust2 - Customer 2」を選択したとします)、完全な DisplayMember テキストではなく、コンボボックスの列セルに値を「Cust2」のみとして表示する必要があります。
この DisplayMember リストは、それにバインドされたデータソースからの 2 つのフィールドの組み合わせです。つまり、最初の部分は CustomerCode フィールドを指し、2 番目の部分は顧客名を指します。ユーザーがドロップダウン リストから 1 つの項目を選択した後、ComboBox セルに CustomerCode のみを表示する必要があります。
これどうやってするの?または、異なる AutoCompleteCustomSource と表示メンバー値を持つ独自のコントロールを考え出す必要があります。私もそのアプローチと混同しています。
更新:誰も私の問題に対する解決策を思い付いていません。今、私はそのための報奨金を開始しています。また、誰かが同じ機能を実装する他の方法を提案してくれれば、それは素晴らしいことです.
私は自分のコントロールを思いつき、単純なコンボボックスで作業して、選択したドロップダウンリストとは異なる値を表示しようとしましたが、うまくいきませんでした. これを実装する他の方法はありますか?ヒントやコツは非常に高く評価されます。
@Anurag: これが私が使用したコードです。デザインモードでデータグリッドビューを作成しました。「DataGridViewComboBoxColumn」タイプの列を 1 つ作成し、CustomerColumn という名前を付けました。
デザイナー ファイルでは、次のようになります。
private System.Windows.Forms.DataGridViewComboBoxColumn CustomerColumn;
これは、データソースに使用したエンティティ クラスです。
public class Customer
{
public int Id { get; set; }
public string CustCode { get; set; }
public string CustName { get; set; }
public string NameWithCode { get; set; }// CustCode - CustName format
}
フォーム ロード イベントでは、次のことを行っています。
CustomerColumn.DataSource = GetCustomers();
CustomerColumn.DisplayMember = "NameWithCode";
CustomerColumn.ValueMember = "Id";