PDA

View Full Version : سوال: ورودي از xml به listview



remove-me
جمعه 21 آبان 1389, 18:34 عصر
سلامي به همه دوستان گل سايت.
من يه listview دارم با سه ستون. و يك فايل xml‌با محتواي زير

<Accounts>
<Item e="hi1" p="hi11" s="hi111" />
<Item e="hi2" p="hi22" s="hi222" />
<Item e="hi3" p="hi33" s="hi333" />
<Item e="hi4" p="hi44" s="hi444" />
</Accounts>



حالا مي خواستم هر سطر از listview يه element رو زير ستون ها نشون بدن. كدي كه من نوشتم بصورت زير است:

System.Xml.XmlDocument loadDoc = new System.Xml.XmlDocument();
loadDoc.Load("c:\\Accounts.xml");
ListViewItem item1 = new ListViewItem();
foreach (System.Xml.XmlElement nodes in loadDoc.SelectNodes("/Accounts/Item"))
{
item1.SubItems.Add(nodes.Attributes["e"].InnerText);
item1.SubItems.Add(nodes.Attributes["p"].InnerText);
item1.SubItems.Add(nodes.Attributes["s"].InnerText);
}
listView1.Items.AddRange(new ListViewItem[] { item1 });




اما متاسفانه اين كد همه عنصرهارو تو يك سطر قرار مي ده. يعني 9 تا ستون در يك سطر.
اگر مي شد تو هر بار حلقه foreach مقدار item1 رو تغيير مي دادم و يه item جديد مي ساختم كارم حل بود اما متاسفانه چنين كاري ممكن نيست.
ممنون مي شم اگر يه راهنمايي منو بكنيد.

mehdi.mousavi
جمعه 21 آبان 1389, 21:57 عصر
سلام.
می تونید بدین شکل عمل کنید (البته پر واضحه که باید مقدار بازگشتی توابع رو چک کنید و کدی که نوشتم رو تغییر بدید).


foreach (System.Xml.XmlElement nodes in loadDoc.SelectNodes("/Accounts/Item"))
{
XmlAttributeCollection attribs = nodes.Attributes;
string e = attribs["e"].InnerText;
string p = attribs["p"].InnerText;
string s = attribs["s"].InnerText;

listView1.Items.Add(e).SubItems.AddRange(new string[] { p, s });
}


موفق باشید.

پاورقی: اینطوری 4 تا Row در 3 تا ستون خواهید داشت. همینو می خواستید؟