PDA

View Full Version : سوال: ساخت منوی داینامیک آبشاری



sepehrforough
جمعه 05 اردیبهشت 1393, 19:25 عصر
سلام ، خیلی وقت پیش تو یه تایپیک ساخت این منو آموزش داده شده بود ، با یک جدول

ولی من تو درک یه قسمتایی از دستوراتش مشکل دارم و خواهش میکنم اگر کسی میدونه راهنمایییم کنه

و توضیح بده که این دستور داره چی کار میکنه

من بعد از ایجاد ارتباط با بانکم این دستوراتو دارم



protected void Page_Load(object sender, EventArgs e)
{

SqlConnection con = new SqlConnection("Data Source=FOROUGH-VAIO\\webdesign;Initial Catalog=CMs;User Id=sa;Password=1 ");
SqlCommand com = new SqlCommand("usp_getCategory", con);
com.CommandType = CommandType.StoredProcedure;
SqlDataAdapter adapt = new SqlDataAdapter(com);
DataSet ds = new DataSet();
adapt.Fill(ds);
CreateMenue(ds.Tables[0], 0,"nav");
}


private void CreateMenue(DataTable dt, int parentId, string navId)
{



lt_navMenue.Text = lt_navMenue.Text + "<ul id='" + navId + "'>";
//lt_navMenue.Text=lt_navMenue.Text+"<li>"+"<a href= '"+jjnjkn+'"</li>";
for (int i = 0; i < dt.Rows.Count; i++)
{
if (Convert.ToInt32(dt.Rows[i]["ParentId"]) == parentId)
{
lt_navMenue.Text = lt_navMenue.Text + "<li><a href='" + dt.Rows[i]["Url"].ToString() + "?clickmenueId=" + dt.Rows[i]["Id"].ToString() + "'>" +
dt.Rows[i]["Title"].ToString() + "</a>";
if (dt.Rows[i]["totalSubCats"] != DBNull.Value)
{
CreateMenue(dt, Convert.ToInt32(dt.Rows[i]["Id"]), "subnav");
lt_navMenue.Text = lt_navMenue.Text + "</li>";
}
}
}
lt_navMenue.Text = lt_navMenue.Text + "</ul>";

}
}





و اینکه تو اون قسمت که تابع بازگشتی نوشته شده ، نمیدونم subnav چه جوری عمل میکنه وقتی که تایع از نو فراخوانی میشه و قراره که subnavجای آیدی ul بشینه در حالی که تو دیتا شیت اصلا آیدی subnavموجود نیست
میشه راهنماییم کنید؟

saeideh_sadat
جمعه 05 اردیبهشت 1393, 21:15 عصر
ابتدا با استفاده از یک stored procedure به نام usp_getCategory منوهایی که قرار است ایجاد شود را دریافت می کند. ابتدا منوهای اصلی را می یابد (آن هایی که parentشان صفر است) یک لینک برای هرکدام می سازد که از فیلدهای url , id , title برای ساخت آن استفاده می کند. سپس با فیلد totalSubCats مشخص می کند آیا منو زیرمجموعه دارد اگر null نباشد با فراخوانی مجدد همین تابع و ارسال ID آن زیرمنوهای آن را ایجاد می کند

sepehrforough
شنبه 06 اردیبهشت 1393, 00:04 صبح
آره کل پروسیجر و روند رو میدونم ، فقط تو قسمت بازگشتیش یعنی صدا زدن تابع درون خودش ، با پاس دادن subnav به جای navid نمیدونم چه جوری به ul آیدی میده ، چون تابع که میره از ابتدا ، به جای navId=subnavقرار میگیره درحالی که توی دیتا شیت سی اس اس آون اصلا subnav معنی نمیده ؟