У меня есть два datagridviews на winform. Первый содержит столбец идентификатора. Я хочу выбрать строку в этом datagridview и иметь второе обновление dgv на основе этого идентификатора. Второй dgv связан с XML и по умолчанию загружает все узлы с именем «Продукт». XML выглядит так:Обновить datagridview из строки нажмите на другой datagridview
<Class1>
<Product .... />
<Product .... />
</Class1>
<Class2>
<Product .... />
<Product .... />
</Class2>
Второй dgv загружает все узлы с именем Product правильно, все внутри всех узлов Classx. Я установил событие на первом datagridview и смог зафиксировать идентификатор и сузить набор результатов. Если я нажимаю на идентификатор строки «1» в первом dgv, мне нужен второй dgv для загрузки только продуктов в «Class1». Это не работает:
private void dgClasses_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv == null)
return;
if (dgv.CurrentRow.Selected)
{
string selectedval;
DataGridViewRow row = this.dgClasses.SelectedRows[0];
selectedval = row.Cells["ID"].Value.ToString();
XmlReader xmlFile = XmlReader.Create(txtFileLocation.Text, new XmlReaderSettings());
DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlFile);
dgProducts.DataSource = null;
dgProducts.Refresh();
dgProducts.DataSource = dataSet.Tables["Class" + selectedval + "/Product"];
xmlFile.Close();
}
}
Как освежить второй DGV, чтобы показать только товары в Class ID # выбранного в первом DGV?
Дополнительная информация: Новое для LINQ to XML, но попробовал что-то вроде этого и данных по-прежнему нет. «Класс является атрибутом на узле продукта, и если он совпадает с selectedval (ID), то мне нужно эти записи.
XDocument xml = XDocument.Load(txtFileLocation.Text);
var nodes = (from n in xml.Descendants("Class" + selectedval)
where n.Element("Product").Attribute("Class").Value == selectedval
select n.Element("Product").Descendants().Elements()).ToList();
dgProducts.DataSource = null;
dgProducts.Refresh();
dgProducts.DataSource = nodes;
что делает **» это не работает» ** означает? – Vland
Почему вы используете '.Attribute (« Class »). Значение«? »Я не вижу никакого атрибута в вашем определении xml. – Vland
. Как вы думаете,« это не работает »? Читайте вопрос, это говорит «нет данных» в dgv. – Blaze