2

ListView に入力する必要がある次のサンプル XML ファイルがあります。何時間も遊んでいますが、最善の方法がわかりません。これを達成するためにLinqを使用したいのですが、私の知識はやや不足しています。Winforms c# プロジェクトです。

<DMs>
  <dataModule>
    <DMC>11111</DMC>
    <techName>Test Techname 1</techName>
    <infoName>info 1</infoName>
    <status>complete</status>
    <notes>Note 1</notes>
  </dataModule>
  <dataModule>
    <DMC>22222</DMC>
    <techName>Test Techname 2</techName>
    <infoName>info 2</infoName>
    <status>in work</status>
    <notes>Note 2</notes>
  </dataModule>
  <dataModule>
    <DMC>33333</DMC>
    <techName>Test Techname 3</techName>
    <infoName>info 3</infoName>
    <status>QA required</status>
    <notes>Note 3</notes>
  </dataModule>
  </DMs>

リストビューの最初の列に DMC 要素テキストを正常に入力する次の非常に基本的なコードがありますが、リストビューの他の列を入力するには兄弟要素 (techName、infoname、status、および notes) が必要です。

XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
            var DMCs = from item in doc.Descendants("dataModule")
                       select item.Element("DMC").Value;

                foreach (var dmc in DMCs)
                {
                    ListViewItem item = new ListViewItem(dmc);
                    listView1.Items.Add(item);

                }
4

2 に答える 2

4

に適切な列を追加しListView、各項目のサブ項目を埋める必要があります。

// Add required columns
listView1.Columns.Add("DMC");
listView1.Columns.Add("Tech Name");
listView1.Columns.Add("Info Name");
listView1.Columns.Add("Status");
listView1.Columns.Add("Notes");

XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");

foreach (var dm in doc.Descendants("dataModule"))
{
    ListViewItem item = new ListViewItem( new string[]
    {
        dm.Element("DMC").Value,
        dm.Element("techName").Value,
        dm.Element("infoName").Value,
        dm.Element("status").Value,
        dm.Element("notes").Value
    });
    listView1.Items.Add(item);
}
于 2013-03-20T10:39:19.197 に答える
0
 XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
 var DMCs = from item in doc.Descendants("dataModule")
            select new {
                        dmc: item.Element("techName").Value, 
                        techName: item.Element("DMC").Value, 
                        infoName: item.Element("infoName").Value, 
                        status: item.Element("status").Value, 
                        notes: item.Element("notes").Value, 

                       };

 ListViewItem item = null;
 foreach (var dmc in DMCs)
 {
     item = new ListViewItem(dmc);
     listView1.Items.Add(item);
 }

これが機能することを願っていますが、まだテストしていません..

于 2013-03-20T10:41:57.783 に答える