Динамическая фильтрация сетки данных в wpf - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь динамически фильтровать представление данных, которое заполняется вводом xml с использованием текстового поля.

Если я начну режим отладки, - форма будет загружена - представление данных будет заполнено вводом XML-файла (Form1_FormLoad) - Я могу добавить некоторый вклад в представление сетки данных - Я могу обновить выбранную строку - Я могу выбрать путь, по которому сетка данных должна быть сохранена как XML - Я могу сохранить отредактированное / неотредактированное представление данных в виде xml-файла

Сохранение происходит таким же образом, как xml-чтение / открытие.


Но что бы я ни пытался, я не могу отфильтровать эти данные в несвязанном виде.

Я нашел 2 метода. У обоих есть недостаток (для меня, как noob), что я должен сначала связать данные. Поэтому, если бы я использовал их, мне пришлось бы переписать весь другой код сохранения, загрузки, добавления и обновления. Потому что я не могу добавить новую строку в источник данных с привязкой. (Сообщение об ошибке)

Так что я был бы рад, если бы кто-то мог предложить некоторые идеи / решения, как я могу реализовать фильтрацию без - публичный набор данных ds получить; задавать; - добавление ввода сетки данных в код

Код описывает метод, как я добавляю xml-ввод в представление таблицы данных. Я ищу решения с 1 недели. Если бы я написал одну букву в текстовом поле, он был бы пустым, но в этом случае представление таблицы данных стало бы пустым. И если бы я стерла одну букву, представление таблицы данных все равно было бы пустым.

PS. Я хотел бы сказать, что я не имею ни малейшего понятия о кодировании. Я искал несколько фрагментов кода и попробовал их ^^: / Если кто-то спросит, я могу опубликовать 2 метода, как это работает. Я тоже их попробовал:)

pathbox.Text = Properties.Settings.Default.pathbox;

string somePath = pathbox.Text;
string filename = "test.xml";
string path = Path.Combine(somePath, filename);

DataSet ds = new DataSet();
ds.ReadXml(path);

foreach (DataRow item in ds.Tables["Player"].Rows)
{

    int n = dgw1.Rows.Add();
    dgw1.Rows[n].Cells[0].Value = item["Name"].ToString();
    dgw1.Rows[n].Cells[1].Value = item["Age"].ToString();
}

1 Ответ

0 голосов
/ 27 апреля 2019

"Поскольку я не мог добавить новую строку в источник данных, связанный с данными. (Сообщение об ошибке)" Почему бы и нет?

Если вы связываете ее с элементами в ObservableCollection, добавление и удаление элементов из коллекции автоматическиобновите его сторону представления (сетку данных).

Я настоятельно рекомендую использовать привязку, что является очень сильным аргументом для использования WPF.

Посмотрите на шаблон mvvm.Вы, вероятно, можете использовать большую часть своего кода.Но просто перенести его в Viewmodel.Тогда вы получите хорошее разделение кода.

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