Как переопределить источник данных combobox (генерируемый linq) при замене моего набора данных с xml? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть поле со списком для «категорий», которое привязано к таблице в моем наборе данных. Есть еще один комбинированный список для «подкатегорий», который заполняется запросом linq, чтобы найти подкатегории, подходящие для выбранной категории в первом комбинированном списке, например:

//get the category selected
            DataRow row = ((DataRowView)comboCategory.SelectedItem).Row;
            //query for appropriate subcategories
            EnumerableRowCollection<DataRow> query =
                from subcategory in flatRateData.Tables["Subcategories"].AsEnumerable()
                where subcategory.Field<Int32>("CategoryID") == Convert.ToInt32(row["ID"])
                select subcategory;

            DataView view = query.AsDataView();
            comboSubcategory.DataSource = view;

Это все хорошо, хорошо и работает довольно хорошо, когда моя программа автоматически загружала мой набор данных из файла xml при запуске. Однако когда я попытался реализовать сохранение и загрузку наборов данных для пользователя, все пошло не так. Я загружаю новый набор данных следующим образом:

comboSubcategory.DataSource = null;
flatRateData.Clear();
//read xml input into data
flatRateData.ReadXml(loadDataDialog.FileName);

Но я получаю следующую ошибку, и она выделяет предложение "where" моего запроса:

Exception thrown: 'System.Data.RowNotInTableException' in System.Data.dll
An exception of type 'System.Data.RowNotInTableException' occurred in System.Data.dll but was not handled in user code
This row has been removed from a table and does not have any data.  BeginEdit() will allow creation of new data in this row.

Если я не разрешаю источник данных для поля со списком, который нужно установить для начала, он «работает», но, конечно же, этот список бесполезен. Я попытался установить для комбинированного списка DataSource значение NULL, прежде чем очистить набор данных, чтобы он не пытался обновить sh привязку комбинированного списка, пока данные не будут заменены, но на самом деле он все еще сталкивается с этой проблемой даже без кода запроса. казнены. Я предполагаю, что это означает, что используемый мной запрос и / или DataView каким-то образом сохраняются, несмотря на то, что для DataSource задано значение null.

Это мой первый вопрос, поэтому, надеюсь, я включил соответствующую информацию! Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...