データベースから返されるDataTableからドロップダウンを設定しようとしています。選択すると、BatchNumber(int)を使用してクエリを実行しますが、コンボボックスにLastRun(フォーマットされたDateTime)を表示します。列名が一致することを確認しました。WinFormsのコンボボックスは、DisplayMemberの代わりにValueMemberを表示します。
何らかの理由でBatchNumberが表示されています。 cboLastRunTime.DisplayMemberを印刷するとき、BatchNumberはLastRunに設定していますが、そこにも表示されます。私はこのトピックに関する多くの記事を読んで、データバインディングやその他のテクニックを試してみました。何も働いていない。 DisplayMemberをどのように表示するのですか?
私はWindowsフォームを使い慣れていません。詳しい情報が必要な場合はお知らせください。
private void GetLastRunTimes()
{
_dataTable = _process.GetLastRunTimes(); //retrieves data from DB
cboxLastRunTimes.DataSource = _dataTable;
cboxLastRunTimes.DisplayMember = "LastRun";
cboxLastRunTimes.ValueMember = "BatchNumber";
}
編集:私はコンボボックスから値を使用するのはここです:
private void btnGetPastResults_Click(object sender, EventArgs e)
{
try
{
int resultId = Convert.ToInt32(cboxLastRunTimes.SelectedValue);
GetPreviousReconciliationInfo(resultId);
if (_resultsDT != null)
LoadDataGrid();
//other UI changes
}
catch (Exception ex)
{
//error handling
}
}
private void GetPreviousReconciliationInfo(int batchNumber)
{
_resultsDT = _process.Reconcile_GetPreviousReconciliationInfo(batchNumber); //retrieves data from DB
}
値やその他のメソッドを取得するために、コンボボックスのSelectionChangedイベントを使用していますか?コンボボックスデータを取得するために使用しているコードを表示する必要があります。 – jpaugh78
行の順序を入れ替えることは、既知の問題です。 – DonBoitnott
@ jpaugh78 - 私はハンドラを含んでいませんでしたが、私はセレクション変更のイベントを引き起こしたいと思っていただけです。このメソッドはLoadという形式で呼び出されています。ドロップダウンのオプションは最初から間違って表示され、セカンダリボタンをクリックするとイベントが発生します。 – Abigail