我正在尝试将初始未绑定条目添加到绑定的ComboBox中。我正在尝试一种非常类似于以下帖子的答案的方法:
How to insert 'Empty' field in ComboBox bound to DataTable
但是,主要区别在于我有严格的要求,不能在实际的数据表中添加一行(因为这是由其他组件使用)。所以,我的解决方案是将额外的行添加到dataview而不是datatable:
public void FillVendorComboBox(DataSet1.VendorDataTable vendors)
{
//Create a custom view of the vendor table
DataView view = new DataView(vendors);
//Add a new row to the view with default values
DataSet1.VendorRow vendorRow = (DataSet1.VendorRow)view.AddNew().Row;
vendorRow.Name = "a";
//Sort the view according to the vendor name
view.Sort = vendors.NameColumn.ColumnName;
//Bind the view to the combo box
cbxVendor.DataSource = view;
cbxVendor.DisplayMember = vendors.NameColumn.ColumnName;
cbxVendor.ValueMember = vendors.IdColumn.ColumnName;
}
问题是排序没有按预期工作。添加的值始终排序到ComboBox的末尾:
另请注意,VendorRow.Name的数据类型为System.String,VendorRow.Id的数据类型为System.Int32。