Работа с combobox

618
09 декабря 2016, 08:58

Доброго времени суток. Возникла следующая проблема, есть XML файл, у меня получается его считать и записать данные в ComboBox, хотелось что бы при выборе в "Combobox"-e нужного значения выводились не все узлы сразу, а только по порядку. Т.е если в "combobox"-e выбран атрибут со значением "Bill Gates", то в GridView выводились company и age именно этого узла. А у меня выводится все сразу...

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        dataSet1.ReadXml(@"F:\XML1.xml");
        dataGridView1.DataSource = dataSet1;
        dataGridView1.DataMember = "operation";
    }
    private void button2_Click(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(@"F:\XML1.xml");
        XmlElement element = doc.DocumentElement;
        foreach (XmlNode xml in element.SelectNodes("//Путь/путь"))
        {
            foreach (XmlNode child in xml.ChildNodes)
            {
                if (child.Name == "operation")
                {
                    XmlNode Att = child.Attributes.GetNamedItem("info");
                    comboBox1.Items.Add(Att.Value);
                }
            }
        }
    }

Пример XML:

<?xml version="1.0" encoding="utf-8" ?>
<users>
<user name="Bill Gates" info="2">
<company>Microsoft</company>
<age>48</age>
</user>
<user name="Larry Page" info="3">
<company>Google</company>
<age>42</age>
</user>

Answer 1

Попробуй воспользоваться методом Select у DataTable.

С помощью него ты сможешь отобрать нужные элементы.

P.S На мой взгляд нерационально на каждый чих комбобокса грузить по новой данные в DataTable.

Лучше считать их 1 раз в свойство класса, а потом использовать.

Answer 2

Нашел решение:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var path = @"F:\XML1.xml";
        var doc = XElement.Load(path);
        var item = doc.Descendants("operation").Where(el => el.Attribute("info").Value == comboBox1.Text).Select(n => new { Company = n.Element("oper_number").Value, Age = n.Element("oper_name").Value }).FirstOrDefault();
        MessageBox.Show(string.Format("Company: {0}, Age: {1}", item.Company, item.Age), "Result");
    }
READ ALSO
Как выполнить действие по кнопке при свернутой форме c#

Как выполнить действие по кнопке при свернутой форме c#

Как сделать какое либо действие на клавишу ESC если программа свернута?

347
Не конвертируется переменная из string в int

Не конвертируется переменная из string в int

У меня есть взятая из буфера обмена скопированная из браузера 194 и она не конвертируется, пишет

367
ASP.NET MVC свой HtmlHelper + Partial

ASP.NET MVC свой HtmlHelper + Partial

Доброго дня, друзья! Тщательно готовился перед тем как задать вопросИ вот

377
Бегущая строка в абзаце

Бегущая строка в абзаце

Помогите встроить бегущую строку в этот вот абзац

274