如何使用XML文件重新填充datagridview

时间:2016-11-02 14:50:17

标签: c# xml datagridview

我已经尝试过这么多,但不幸的是我没有运气。我有一个应用程序,允许您选择一个COM端口及其波特率,然后将其连接到另一个COM端口(因此信号进入一个端口,而另一个端口)。我有一个保存功能,使其保存为XML格式。

我希望能够打开该保存文件,以便XML文件中的所有信息都填充datagridview,但我找不到办法。

(在我的应用程序中使用基本设置)我在谷歌浏览器中打开XML文件,它看起来像这样(布局不完美,但我可以稍后更改):

function customRegex(){
      return function(myString,replacement,myValue){
        var s = myString;
        var rgx = new RegExp(replacement,"gi");
        myString = myString.replace(rgx, myValue);
        return myString;
    }
  }

  var reg = customRegex();
  console.log( reg("This is the worst!","worst","best"));

以下代码是我保存数据的方式。我只是希望能够基本上做到这一点,并将数据放回原来的位置。

<Root_Element>
<Output_Port Output_Baud="9600">COM104</Output_Port>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM3</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM1</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM6</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM5</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM4</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is On" Baud="9600" Extract="12345" Data="">COM100</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM101</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is On" Baud="9600" Extract="" Data="">COM102</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM103</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM104</Serial_Port_Name>
<Serial_Port_Name Use="Checkbox is Off" Baud="9600" Extract="" Data="">COM105</Serial_Port_Name>
</Root_Element>

任何帮助都会很棒!提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用DataSet/DataTable

此代码读取您的xml文件:

var ds = new DataSet();
ds.ReadXml("filename.xml");

现在DataTable中有两个DataSet

让我们从第一个获得价值:

var outputBaud = ds.Tables[0].Rows[0]["Output_Baud"];
var outputPort = ds.Tables[0].Rows[0]["Output_Port_Text"];

接下来,从第二个DataGridView填充DataTable(注意!黑魔法!):

dataGridView.DataSource = ds.Tables[1];

简单,不是吗?

现在,您可以在DataGridView中修改值。由于数据绑定,它们将存储在DataTable

保存数据也非常简单。

ds.Tables[0].Rows[0]["Output_Baud"] = outputBaud;
ds.Tables[0].Rows[0]["Output_Port_Text"] = outputPort;

ds.WriteXml("filename.xml");

你可以扔掉笨重的代码。