我正在尝试从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
}
答案 0 :(得分:0)
虽然数据库中的列名是LastRun,但它在SQLClient的途中被转换为LastReconciledTime。将DisplayMember的值更改为LastReconciledTime会修复它。
感谢@Fabio提醒您仔细检查!