WinForms组合框显示ValueMember而不是DisplayMember

时间:2016-05-25 14:34:33

标签: c# winforms combobox

我正在尝试从DataTable填充下拉列表,该数据表从数据库返回。选择后,我将使用BatchNumber(int)运行查询,但我希望组合框显示LastRun(格式化的DateTime)。我已经确认列名匹配。

由于某种原因,正在显示BatchNumber。打印出cboLastRunTime.DisplayMember时,即使我已将其设置为LastRun,也会在那里显示BatchNumber。我已经阅读了很多关于这个主题的文章,并且已经开始使用数据绑定和其他技术;没有任何效果。如何显示DisplayMember?

我对Windows Forms很陌生。如果您需要更多信息,请与我们联系。

    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
    }

1 个答案:

答案 0 :(得分:0)

虽然数据库中的列名是LastRun,但它在SQLClient的途中被转换为LastReconciledTime。将DisplayMember的值更改为LastReconciledTime会修复它。

感谢@Fabio提醒您仔细检查!