2016-05-25 35 views
0

我試圖填充從數據庫返回的DataTable的下拉列表。一旦選中,我將使用BatchNumber(int)運行查詢,但我希望組合框顯示LastRun(格式化的DateTime)。我已經驗證了列名匹配。WinForms組合框顯示ValueMember而不是DisplayMember

出於某種原因,正在顯示BatchNumber。打印出cboLastRunTime.DisplayMember時,即使已將其設置爲LastRun,BatchNumber也會顯示在那裏。我已經閱讀了很多關於這個主題的文章,並且玩過數據綁定和其他技術;沒有任何工作。我如何顯示DisplayMember?

我很新的Windows窗體。如果您需要更多信息,請告訴我。

private void GetLastRunTimes() 
    { 
     _dataTable = _process.GetLastRunTimes(); //retrieves data from DB 
     cboxLastRunTimes.DataSource = _dataTable; 
     cboxLastRunTimes.DisplayMember = "LastRun"; 
     cboxLastRunTimes.ValueMember = "BatchNumber"; 
    } 

編輯:這裏是我使用的值從ComboBox:

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 
    } 
+0

您是否在使用組合框SelectionChanged事件來獲取值或其他方法?您需要向我們展示您用於檢索組合框數據的代碼。 – jpaugh78

+0

交換線的順序,這是一個已知的問題。 – DonBoitnott

+0

@ jpaugh78 - 我沒有包括處理程序,但是我只是想要在選擇更改時觸發事件而需要它。這個方法在Load表單上被調用。下拉菜單中的選項從一開始就顯示不正確,而且只有在單擊了輔助按鈕後纔會觸發事件。 – Abigail

回答

0

雖然在數據庫中的列名是LASTRUN,它被轉換到LastReconciledTime途中從SQLCLIENT。將DisplayMember的值更改爲LastReconciledTime將其修正。

感謝@Fabio提醒仔細檢查!

相關問題