как сделать привязку данных между XML-файлом, используя C # в WinForm - PullRequest
0 голосов
/ 30 декабря 2010

У меня есть XML-файл, структура которого приведена ниже

<root>
  <contact name="abc">
    <name>Apurv Kumar</name>
    <email>apurva3633a@gmail.com</email>
    <EmpID>JSE040</EmpID>
  </contact>
</root

Теперь я хочу двухстороннее связывание в C # .net между следующими тремя текстовыми полями Winforms с вышеупомянутыми узлами XML-файла, чтобы все, что я буду изменять во время выполнения в текстовых полях, отражало соответствующие значения узлов выше XML-файл и будет динамически обновлять XML-файл.

textBox1.text=name
textBox2.text=email
textBox3.text=EmpID

Я очень новичок в этом мире Winforms. Пожалуйста, кто-нибудь посоветует мне создать набор данных или источник данных, который будет решать все эти проблемы привязки. Любая помощь будет оценена.

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 30 декабря 2010

Следующий код предназначен для привязки текстового поля к вашему набору данных,

        BindingSource bs = new BindingSource(); //Private Variable class level
        //write this code on form load
        dataset ds = new dataset();
        ds.readxml("XML File Path of yours");

        bs.DataSource = ds;
        bs.DataMember = ds.table[0].tablename;

        textBox1.DataBindings.Add("FirstName", bs, "Table Name");
        textBox2.DataBindings.Add("FirstName", bs, "Table Name");

Используйте экземпляр класса BindingSource и прикрепите его ко всем текстовым полям, также вы можете сделать это во время разработки.

Перейдите по этой ссылке для получения дополнительной информации о связывании или создании набора данных из XML.

1 голос
/ 30 декабря 2010

В худшем случае вы можете сделать это по событию ontextoted, иначе предоставьте одну кнопку отправки.

 private void OnNameChanged(object sender, EventArgs e)
    {
        XmlDocument sampleDoc = new XmlDocument();
         sampleDoc.Load(@"sample.xml");
        sampleDoc.GetElementsByTagName("name")[0].InnerText = textBox1.Text;
        sampleDoc.Save(@"sample.xml");
    }

    private void OnEmailChanged(object sender, EventArgs e)
    {
        XmlDocument sampleDoc = new XmlDocument();
         sampleDoc.Load(@"sample.xml");           
        sampleDoc.GetElementsByTagName("email")[0].InnerText = textBox2.Text;
       sampleDoc.Save(@"sample.xml");

    }

    private void OEmpIdChange(object sender, EventArgs e)
    {
        XmlDocument sampleDoc = new XmlDocument();
        sampleDoc.Load(@"sample.xml");

        sampleDoc.GetElementsByTagName("EmpID")[0].InnerText = textBox3.Text;
        sampleDoc.Save(@"sample.xml");           
    }
0 голосов
/ 30 декабря 2010

Я бы посмотрел. LINQ к XML

Это должно сделать привязку данных достаточно простой.

...