C# WinForms组合框显示ValueMember而不是DisplayMember
我试图填充从数据库返回的DataTable中的下拉列表。选择后,我将使用BatchNumber(int)运行查询,但我希望组合框显示LastRun(格式化日期时间)。我已验证列名是否匹配 出于某种原因,正在显示BatchNumber。打印出cboLastRunTime.DisplayMember时,BatchNumber也会显示在那里,即使我已将其设置为LastRun。我已经阅读了很多关于这个主题的文章,并尝试了数据绑定和其他技术;什么都没起作用。如何显示DisplayMember 我对Windows窗体相当陌生。如果你需要更多信息,请告诉我C# WinForms组合框显示ValueMember而不是DisplayMember,c#,winforms,combobox,C#,Winforms,Combobox,我试图填充从数据库返回的DataTable中的下拉列表。选择后,我将使用BatchNumber(int)运行查询,但我希望组合框显示LastRun(格式化日期时间)。我已验证列名是否匹配 出于某种原因,正在显示BatchNumber。打印出cboLastRunTime.DisplayMember时,BatchNumber也会显示在那里,即使我已将其设置为LastRun。我已经阅读了很多关于这个主题的文章,并尝试了数据绑定和其他技术;什么都没起作用。如何显示DisplayMember 我对Wind
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
}
当数据库中的列名是LastRun时,它在从SQLClient传递的过程中被转换为LastReconciredTime。将DisplayMember的值更改为LastReconciredTime修复了它
感谢@Fabio提醒我们再次检查 当数据库中的列名上次运行时,它在从SQLClient传输的过程中被转换为LastReconfiedTime。将DisplayMember的值更改为LastReconciredTime修复了它
感谢@Fabio提醒我们再次检查 您是使用组合框SelectionChanged事件获取值还是使用其他方法?您需要向我们展示用于检索组合框数据的代码。交换行的顺序,这是一个已知的问题。@jpaugh78-我没有包含处理程序,但我的印象是,如果我想在选择更改时触发事件,我只需要它。正在表单加载时调用此方法。下拉列表中的选项从一开始就显示不正确,只有单击辅助按钮时才会触发事件。@DonBoitnott-尝试过。。。同样的问题。再次检查
数据表中是否存在列“LastRun”。datatable变量是在窗体范围中定义的。将其更改为方法范围以确保没有任何更改。是否使用组合框SelectionChanged事件获取值或其他方法?您需要向我们展示用于检索组合框数据的代码。交换行的顺序,这是一个已知的问题。@jpaugh78-我没有包含处理程序,但我的印象是,如果我想在选择更改时触发事件,我只需要它。正在表单加载时调用此方法。下拉列表中的选项从一开始就显示不正确,只有单击辅助按钮时才会触发事件。@DonBoitnott-尝试过。。。同样的问题。再次检查数据表中是否存在列“LastRun”。datatable变量是在窗体范围中定义的。将其更改为方法范围,以确保没有任何更改