DataView сортировка после добавления нового - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь добавить начальную несвязанную запись в связанный 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.

...