PDA

View Full Version : نمایش گروه و زیرگروه در DropDownList



moslem.hady
چهارشنبه 29 شهریور 1391, 09:49 صبح
سلام. دوستان من میخوام گروه ها و زیرگروه هام رو به صورت سلسله مراتبی در DropDownList نشون بدم. یک جدول دارم که فیلدهاش مطابق تصویره. و میخوام گروه ها رو مثل تصویر بیارم.
کد sql یا نحوه انجام این کار رو در code behind میخوام. C#
ممنون میشم راهنماییم کنید.
93080

fakhravari
چهارشنبه 29 شهریور 1391, 11:21 صبح
شما با 2 تا حلقه for میتوانید همچین چیزی درست کنید به ترتیب ابتدا موضوعات و کد هر موضوع بره توی جدول بعدی همه رو بیاره. بعد add کنه در یک list item یا یک دیتاتیبل

moslem.hady
چهارشنبه 29 شهریور 1391, 11:23 صبح
شما با 2 تا حلقه for میتوانید همچین چیزی درست کنید به ترتیب ابتدا موضوعات و کد هر موضوع بره توی جدول بعدی همه رو بیاره. بعد add کنه در یک list item یا یک دیتاتیبل
فقط یک گروه و زیرگروهش نیست که!! هرگروه میتونه تا بینهایت زیرگروه داشته باشه
باید با تابع بازگشتی نوشته بشه نه با 2تا for!

hamed_hossani
چهارشنبه 29 شهریور 1391, 12:48 عصر
http://www.how2learnasp.net/article.aspx?code=6e262527-5042-41d7-aba6-fddda0700020
به مقاله مراجعه کن و ازش ایده بگیر!
داده ها را ازsql میگیره میریزه تو xml و در treeview نشون میده!
قسمت ساخت xml ش به درد شما می خوره!

public void CreateNodes(int parentId)
{
DataTable dt = GetMenuByParentID(parentId);
foreach (DataRow dr in dt.Rows)
{

writer.WriteStartElement("Node");

writer.WriteStartAttribute("ID");
writer.WriteValue(dr["MenuID"].ToString());
writer.WriteEndAttribute();


writer.WriteStartAttribute("Name");
writer.WriteValue(dr["MenuName"].ToString());
writer.WriteEndAttribute();

CreateNodes(Convert.ToInt32(dr["MenuID"]));

writer.WriteEndElement();
}
}

moslem.hady
چهارشنبه 29 شهریور 1391, 14:29 عصر
دوستان من خودم تابعش رو نوشتم.

void getgroup(int id,string level)
{
DataAccessDataContext _data = new DataAccessDataContext();
foreach (Group item in _data.Groups.Where(a => a.ParentID == id))
{
ListItem lst = new ListItem(level+" "+item.Title, item.ID.ToString());
DropDownList1.Items.Add(lst);
getgroup(item.ID,level+"-");
}
}
و در لود صفحه فراخانی تابع به این صورت:
getgroup(0,"");