Я пытаюсь добавить начальную несвязанную запись в связанный ComboBox. Я пытаюсь подход, очень похожий на ответ на следующий пост:
Как вставить пустое поле в ComboBox, привязанное к DataTable
Однако основное отличие состоит в том, что у меня есть строгие требования, и я не могу добавить строку в фактическую таблицу данных (так как она используется другими компонентами). Итак, мое решение состоит в том, чтобы добавить дополнительную строку в представление данных вместо 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:
- до н.э. (связаны)
- Оболочка (связанная)
- a (добавлено) <- почему это сортировка по дну? </li>
Также обратите внимание, что VendorRow.Name является типом данных System.String, а VendorRow.Id является типом данных System.Int32.