【问题标题】:how to do databinding between XML file using C# in WinForm如何在 WinForm 中使用 C# 在 XML 文件之间进行数据绑定
【发布时间】:2011-06-01 12:44:00
【问题描述】:

我有一个xml文件,其结构如下所示

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

现在我想在 C#.net 中使用上述 xml 文件节点在以下三个 Winforms 文本框之间进行两种方式绑定,以便我在运行时在文本框中更改的任何内容都会反映在上面的相应节点值上xml 文件,并将动态更新 xml 文件。

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

我对这个 Winforms 世界很陌生,请任何人建议我创建数据集或数据源来处理所有这些绑定问题。任何帮助将不胜感激。

提前致谢

【问题讨论】:

  • 我们在winforms 世界里有datagridview 和listview 组件,遇见他们并选择一个:)

标签: c# winforms data-binding dataset datasource


【解决方案1】:

以下代码用于将文本框绑定到您的数据集,

        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 实例并将其附加到所有文本框,您也可以在设计时执行。

关注this 链接,了解有关从 XML 绑定或创建数据集的更多信息。

【讨论】:

  • 感谢您的精彩回复,这正是我所需要的,但由于我对这个领域很陌生,所以我无法在编码中完成,所以请您为此分享一个示例应用程序我能够知道如何去做。再次感谢您的热心帮助。
【解决方案2】:

在最坏的情况下,您可以通过 ontextchanged 事件执行此操作,否则提供一个提交按钮。

 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");           
    }

【讨论】:

  • 非常感谢您的回答。您能否告诉我如何通过创建 DataSet 来执行此操作,因为虽然我将更改 xml 节点名称,但我也必须在代码中进行相同的更改,我认为在几个地方进行更改而不是在一个地方进行更改并不痛苦
  • 为每个节点名创建常量并放在单个类中。
  • 如果您不介意,请在这里分享一个示例应用程序,我面临很多问题,例如动态更新字段值和将新节点插入 xml 文件等。
【解决方案3】:

我想看看。 linq-to-xml

这应该使数据绑定足够简单。

【讨论】:

  • -1 也许一个简单的例子会有所帮助,您提供的链接根本没有回答问题。
猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 2012-10-08
  • 2016-02-12
  • 1970-01-01
  • 2015-10-25
  • 2021-08-17
  • 2022-01-15
  • 2010-11-08
相关资源
最近更新 更多