Как отфильтровать сетку, когда строки добавляются вручную в c # - PullRequest
0 голосов
/ 22 сентября 2018

Как я могу отфильтровать строки, используя textBox, когда строки добавляются вручную

Вот мой код:

int n = XML_Grid.Rows.Add();
XML_Grid.ClearSelection();
XML_Grid.Rows[n].Cells[1].Value = FileName;
XML_Grid.Rows[n].Cells[2].Value = Name;
XML_Grid.Rows[n].Cells[3].Value = ID;
XML_Grid.Rows[n].Cells[4].Value = Date;

Если невозможно отфильтровать, как я могу добавить строки, используяdatatable как я сделал для DataGridView таким же образом?

Примечание. Этот вопрос может быть повторен, но я не нашел решения своей проблемы

1 Ответ

0 голосов
/ 22 сентября 2018

Загрузите данные Xml в DataTable, а затем установите для DataTable значение XML_Grid.DataSource.

DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("FileName");
dt.Columns.Add("Name");
dt.Columns.Add("ID");
dt.Columns.Add("Date");

XML_Grid.Rows.Clear();
lbl_Path.Text = fbd.SelectedPath;
string[] files = Directory.GetFiles(fbd.SelectedPath, "*.xml");

XmlDocument doc = new XmlDocument();
XmlNodeList nodes = doc.GetElementsByTagName("cfdi:Emisor");
XmlNodeList nodes1 = doc.GetElementsByTagName("cfdi:Comprobante");

foreach (string tot_file in files)
{
    doc.Load(tot_file);
    string FileName = Path.GetFileNameWithoutExtension(tot_file);

    for (int i = 0; i < nodes.Count; i++)
    {
        string Name = nodes[i].Attributes["Nombre"].Value;
        string ID = nodes[i].Attributes["Rfc"].Value;
        string Date = nodes1[i].Attributes["Fecha"].Value;

        DataRow row = dt.NewRow();
        row["FileName"] = FileName;
        row["Name"] = Name;
        row["ID"] = ID;
        row["Date"] = Date;
        dt.Rows.Add(row);
    }
}

XML_Grid.DataSource = dt;

И в текстовое поле добавьте текстовое событие ниже, например, для фильтрации данных.

(XML_Grid.DataSource as DataTable).DefaultView.RowFilter = string.Format("FileName LIKE '{0}%'", txt_FileName.Text)

Редактировать:

Если вы хотите добавитьстроки к существующим столбцам, которые вы добавили через add column из datagridview, затем просто установите DataPropertyName для каждого столбца XML_Grid на имя столбца DataTable, например

XML_Grid.Columns[0].DataPropertyName = "FileName";
XML_Grid.Columns[1].DataPropertyName = "Name";
XML_Grid.Columns[2].DataPropertyName = "ID";
XML_Grid.Columns[3].DataPropertyName = "Date";

Где 0,1,2,3 - индекс вашей колонки.Проверьте индекс столбца в соответствии с вашими существующими столбцами в XML_Grid.

Добавьте указанную выше строку кода чуть выше к XML_Grid.Rows.Clear();

В качестве альтернативы приведенному выше коду вы можете установить DataPropertyName для каждогостолбца из окна свойств представления данных.

Выберите XML_Grid ==> Открыть окно свойств ==> Выбрать Columns Свойство ==> Выберите свой столбец ==> И установите его DataPropertyName из (нет)) в "FileName".

И то же самое для всех оставшихся столбцов.

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