PDA

View Full Version : سوال: افزودن گروه و آیتمهای هر گروه به listview



sjhosseini
یک شنبه 22 آذر 1388, 08:03 صبح
سلام
من کد زیر رو برای اضافه کردن گروه و ایتمهای مربوط به هر گروه نوشتم ولی مشکلش اینه که به ازای هر آیتم یک گروه تشکیل میده و نمیتونه آیتمهای با گروه مشابه رو تو یک گروه بزاره.



myClass clsRecord = new myClass();
DataTable dt = clsRecord.Get_All_Record();
listView1.Groups.Clear();
listView1.Items.Clear();


ListViewGroup lvg;
ListViewItem lvi;

for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow drow = dt.Rows[i];
lvg = new ListViewGroup(drow["Group_Title"].ToString());
if (!listView1.Groups.Contains(lvg))
listView1.Groups.Add(lvg);
lvi = new ListViewItem(drow["Item_title"].ToString(), lvg);
listView1.Items.Add(lvi);
}

sjhosseini
یک شنبه 22 آذر 1388, 18:56 عصر
متد Contains فقط بر اساس Header گروه ها جستجو نمی کنه، به همین دلیل، گروه مربوطه رو پیدا نمی کنه.

می تونید از متد زیر استفاده کنید:

private ListViewGroup ExistGroup(string strGName)
{
foreach (ListViewGroup lvg in listView1.Groups)
if (lvg.Header == strGName)
return lvg;
return null;
}

و کدتون رو به صورت زیر تغییر بدید:


for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow drow = dt.Rows[i];
lvg = ExistGroup(drow["Group_Title"].ToString());
if (lvg==null)
{
lvg = new ListViewGroup(drow["Group_Title"].ToString());
listView1.Groups.Add(lvg);
}
lvi = new ListViewItem(drow["Item_title"].ToString(), lvg);
listView1.Items.Add(lvi);
}