PDA

View Full Version : داینامک کردن منو وبسایت



majid_gh7168
پنج شنبه 09 شهریور 1391, 00:17 صبح
سلام

دوستان من این سمپل میخام داینامیک کنم
لطفا کمک کنید


92035

http://barnamenevis.org/images/misc/pencil.png

fakhravari
پنج شنبه 09 شهریور 1391, 00:23 صبح
خب مراحل به ترتیب جلو میریم.
اول باید موضوعات اصلی را داشته باشیم.
ساختار جدول
CREATE TABLE [dbo].[Roots](
[ID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Url] [nvarchar](50) NOT NULL)


INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (1, N'Web Site', N'www.Web Site.com')
INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (2, N'Reporting', N'www.Reporting.com')
INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (3, N'mohandesi', N'www.mohandesi.com')

خب بعد موضوعات اصلی به زیر منو میرسیم
که ساختار جدول به این شکل است

CREATE TABLE [dbo].[Leafs](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ParentID] [int] NULL,
[Name] [varchar](50) NOT NULL,
[Url] [nvarchar](50) NOT NULL)


INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (9, 1, N'html', N'www.html.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (11, 1, N'asp', N'www.asp.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (12, 1, N'php', N'www.php.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (13, 2, N'cristal', N'www.cristal.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (14, 2, N'stiult', N'www.stiult.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (15, 2, N'quecriport', N'www.quecriport.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (16, 3, N'uml', N'www.uml.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (17, 3, N'ros', N'www.ros.com')

بعد از ساختن جداول نوبت به جای خوشمزه پیاده سازیش میرسه
متذ های مورد نیاز
گرفتن کل اطلاعات موضوعات
public DataTable GetParents()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=COMPUTER1\SQLEXPRESS;Initial Catalog=TableHome;Integrated Security=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Roots", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}
متد بعدی فراخوانی کل زیر بخش موضوعات
public DataTable GetMenuByParentID(int parentId)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=COMPUTER1\SQLEXPRESS;Initial Catalog=TableHome;Integrated Security=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Leafs where ParentID=@ParentID", con);
cmd.Parameters.AddWithValue("@ParentID", parentId);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}
خب متد هامون تموم شد حالا مراحل ساخت بر اساس جداول بالا.
protected void Page_Load(object sender, EventArgs e)
{
DataTable GetParentsDB = GetParents();
int rowdt1 = GetParentsDB.Rows.Count;
DataTable dt;


string Marquee = "<ul id=\"jDesign_menu\">";

for (int i = 0; i < rowdt1; i++)
{

dt = new DataTable();
dt = GetMenuByParentID(int.Parse(GetParentsDB.Rows[i]["ID"].ToString()));
int id1 = 0;
id1 = dt.Rows.Count;
if (dt.Rows.Count > 0)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}
else
{
Marquee += String.Format("<li><a href=\"{0}\" class=\"jDesign_subs\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}

if (dt.Rows.Count > 0)
{
Marquee += "<ul class=\"subs\">";

for (int b = 0; b < id1; b++)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a></li>", dt.Rows[b]["Url"].ToString(), dt.Rows[b]["Name"].ToString());
}
Marquee += "</ul>";
}
else
{
Marquee += "</li>";
}
}


Marquee += "</ul>";

Literal1.Text = Marquee;


}


و مرحله آخر
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<center>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</center>
</form>
</body>
</html>
بعد ببنید و لذت ببرید:بامزه:
ساختار برنامه جوری که تا N اگر روش کار کنی زیر مجموعه میتونه داشته باشه.

majid_gh7168
پنج شنبه 09 شهریور 1391, 02:49 صبح
تشکر از اقای fakhravari (http://barnamenevis.org/member.php?128926-fakhravari) بابت این راهنمایی خوبه شون

fakhravari
جمعه 07 مهر 1391, 19:50 عصر
سمپل 2 نمونه کار .

http://uplod.ir/u0zko2ud57ze/Meno_Dynamic.rar.htm

neda555
شنبه 08 مهر 1391, 01:06 صبح
سلام اگر بخواهیم عمودی باشه چه کار کنیم؟

fakhravari
شنبه 08 مهر 1391, 03:42 صبح
فرقی نداره مراحل به همان شکل است.
فقط نوع css کمی فرق میکنه.

bitcob589
شنبه 08 مهر 1391, 08:50 صبح
اگر زیر منو- زیر منو داشته باشد به چه صورتی می توان زیر منو دوم را نمایش داد

neda555
شنبه 08 مهر 1391, 10:29 صبح
فرقی نداره مراحل به همان شکل است.
فقط نوع css کمی فرق میکنه.
میشه لطفا یکی از مثال ها را css ش را به عمودی تغییر بدین

ya30ien2
شنبه 08 مهر 1391, 11:09 صبح
میشه لطفا یکی از مثال ها را css ش را به عمودی تغییر بدین
با اجازه اساتید

کد css

#vertical-nav
{
background-color:Lime;
width:150px;
font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
/*float:right;*/
direction:rtl;
text-align:center;
z-index:1000px;
}
#vertical-nav ul {
margin:0px;
padding:0px;
*border-top:1px #333 solid;/*IE 7*/
}
ul.vertical-top-level {
background-color:#333;
}
#vertical-nav li {
list-style:none;
}
ul.vertical-top-level li {
border-bottom:#fff solid 1px;
}
#vertical-nav a {
color:#fff;
display:block;
height:25px;
line-height:25px;
text-decoration:none;
width:100%;
}
#vertical-nav a:hover{
_background-color:#39C;/*IE 6*/
_display:block;/*IE 6*/
}
#vertical-nav li:hover {
background-color:#39C;
position:relative;
}
ul.vertical-sub-level {
display:none;
}
li:hover .vertical-sub-level {
background-color:#666;
border:#fff solid 1px;
display:block;
position:absolute;
right:150px;
top:0px;
}
ul.vertical-sub-level li {
border:none;
float:right;
width:150px;
*background-color:#666;/*IE 7*/
}
#vertical-nav .vertical-sub-level {
background-color:#666;
}
#vertical-nav .vertical-sub-level .vertical-sub-level {
background-color:#666;
}
li:hover .vertical-sub-level .vertical-sub-level {
display:none;
}
.vertical-sub-level li:hover .vertical-sub-level {
display:block;
left:0px;/*IE 7*/
}


اینم کد خواندن از دیتابیس

protected void Page_Load(object sender, EventArgs e)
{
DataTable GetParentsDB = GetParents();
int rowdt1 = GetParentsDB.Rows.Count;
DataTable dt;


string Marquee = "<ul id=\"vertical-nav\">";

for (int i = 0; i < rowdt1; i++)
{

dt = new DataTable();
dt = GetMenuByParentID(int.Parse(GetParentsDB.Rows[i]["ID"].ToString()));
int id1 = 0;
id1 = dt.Rows.Count;
if (dt.Rows.Count > 0)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}
else
{
Marquee += String.Format("<li><a href=\"{0}\" class=\"vertical-top-level\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}

if (dt.Rows.Count > 0)
{
Marquee += "<ul class=\"vertical-sub-level\">";

for (int b = 0; b < id1; b++)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a></li>", dt.Rows[b]["Url"].ToString(), dt.Rows[b]["Name"].ToString());
}
Marquee += "</ul>";
}
else
{
Marquee += "</li>";
}
}


Marquee += "</ul>";

Literal1.Text = Marquee;


}
public DataTable GetParents()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Roots", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}
public DataTable GetMenuByParentID(int parentId)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Leafs where ParentID=@ParentID", con);
cmd.Parameters.AddWithValue("@ParentID", parentId);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}

ya30ien2
شنبه 08 مهر 1391, 11:13 صبح
البته کد فراخوانی هیچ فرقی نکرده فقط کلاس های فراخوانی شده با css جدید ست شده که به رنگ قرمز در آوردم

fakhravari
شنبه 08 مهر 1391, 11:14 صبح
اگر زیر منو- زیر منو داشته باشد به چه صورتی می توان زیر منو دوم را نمایش داد
با سلام
این کاری که شما میگید میشود sub زیر sub که 3 تا زیر مجموعه میشود.
این هم شدنی است و نیازمند یک حلقه for تو در توی دیگر است.

bitcob589
شنبه 08 مهر 1391, 11:36 صبح
با سلام
این کاری که شما میگید میشود sub زیر sub که 3 تا زیر مجموعه میشود.
این هم شدنی است و نیازمند یک حلقه for تو در توی دیگر است.
با سلام
حلقه for دیگر در کجا نوشته می شود

dorparasti
شنبه 08 مهر 1391, 12:12 عصر
من اشکالات زیر رو از کد دوستمون جناب فخرآوری می تونم بگیرم ( برای بهتر شدن کد نوشته شده )

1- دو جدولی که برای پیاده سازی منو ساخته شده رو میشه در یک جدول خلاصه کرد ( با ساختاری شبیه جدول leaf ) . به این ساختار ، می گن ساختارهای خود ارجاع دهنده یعنی یک فیلد از ساختار ارجاعی به یک فیلد در همون ساختار داره .
2- با این ساختار ساختن سطوح بیشتر از دو سخت میشه .
2- در کد نوشته شده برای گرفتن زیرشاخه احتمالی هر root یک درخواست به دیتابیس داره ارسال میشه که روش خوبی نیست و در صورتی که تعداد آیتم های منو زیاد باشه درخواست های زیادی به دیتابیس ارسال میشه که نیازی به اون نیست . در حالی که با استفاده از بند یک میشه تمام اطلاعات منو رو یکباره از دیتابیس گرفت و بعد منطق مربوط به سلسله مراتب آیتم ها رو در سمت سرور انجام داد .
3- توی کد مربوط به ساختن منو دوبار مقدار dt.rows.count چک شده درحالی که میشه در همون بار اول هر دو کار رو انجام داد .

ya30ien2
شنبه 08 مهر 1391, 12:40 عصر
من اشکالات زیر رو از کد دوستمون جناب فخرآوری می تونم بگیرم ( برای بهتر شدن کد نوشته شده )

1- دو جدولی که برای پیاده سازی منو ساخته شده رو میشه در یک جدول خلاصه کرد ( با ساختاری شبیه جدول leaf ) . به این ساختار ، می گن ساختارهای خود ارجاع دهنده یعنی یک فیلد از ساختار ارجاعی به یک فیلد در همون ساختار داره .
2- با این ساختار ساختن سطوح بیشتر از دو سخت میشه .
2- در کد نوشته شده برای گرفتن زیرشاخه احتمالی هر root یک درخواست به دیتابیس داره ارسال میشه که روش خوبی نیست و در صورتی که تعداد آیتم های منو زیاد باشه درخواست های زیادی به دیتابیس ارسال میشه که نیازی به اون نیست . در حالی که با استفاده از بند یک میشه تمام اطلاعات منو رو یکباره از دیتابیس گرفت و بعد منطق مربوط به سلسله مراتب آیتم ها رو در سمت سرور انجام داد .
3- توی کد مربوط به ساختن منو دوبار مقدار dt.rows.count چک شده درحالی که میشه در همون بار اول هر دو کار رو انجام داد .

لطفا یک نمونه بزارید تا ما بیشتر استفاده ببیرم

dorparasti
شنبه 08 مهر 1391, 12:45 عصر
یک نمونه ساده رو می تونید از اینجا (http://dorparasti.persiangig.com/document/Dynamic%20Menu.rar) دانلود کنید .

1- تنها از یک جدول استفاده شده . ساختار جدول همون ساختار جدول leafs هستش فقط به جای Name ، از Title استفاده کردم .
2- به راحتی سطوح بیشتر از 2 تا رو اجرا میکنه .
3- برای ساختن منو تمام اطلاعات یکباره فراخوانی میشن و توی کد ساختار منو ساخته میشه . برای ساختن هر سطح از منو تابع سازنده منو خودش رو دوباره فراخوانی می کنه ( تابع بازگشتی ) .

ویرایش : کد یک اشکالی داشت که اونرو دوباره آپلود کردم .

bitcob589
شنبه 08 مهر 1391, 12:58 عصر
یک نمونه ساده رو می تونید از اینجا (http://dorparasti.persiangig.com/document/Dynamic%20Menu.rar) دانلود کنید .

1- تنها از یک جدول استفاده شده . ساختار جدول همون ساختار جدول leafs هستش فقط به جای Name ، از Title استفاده کردم .
2- به راحتی سطوح بیشتر از 2 تا رو اجرا میکنه .
3- برای ساختن منو تمام اطلاعات یکباره فراخوانی میشن و توی کد ساختار منو ساخته میشه . برای ساختن هر سطح از منو تابع سازنده منو خودش رو دوباره فراخوانی می کنه ( تابع بازگشتی ) .
اگر امکان دارد سمپل مثل پست 4 بگذارید

fakhravari
شنبه 08 مهر 1391, 14:25 عصر
ممنون از اقای زائری.
دوستان برای استفاده میتوانن از XML بخونن که سرعت کارم بالا میره و دیگه ارتباطی با دیتابیس نداره.

neda555
شنبه 08 مهر 1391, 14:54 عصر
من یه نمونه میخوام که با کلیک روی یک آیتم زیر منو هاش زیرش باز بشه مثل نمونه فرمت هایی که در treeview داریم(با روش آقای فخرآوری)

fakhravari
شنبه 08 مهر 1391, 15:37 عصر
من یه نمونه میخوام که با کلیک روی یک آیتم زیر منو هاش زیرش باز بشه مثل نمونه فرمت هایی که در treeview داریم(با روش آقای فخرآوری)

یه سمپل برای TreeView

neda555
شنبه 08 مهر 1391, 16:09 عصر
ممنون دکمه bind واسه چیه؟ وقتی روش کلیک کنی موقع کانکشن زدن ارور میگیره

fakhravari
شنبه 08 مهر 1391, 17:22 عصر
ممنون دکمه bind واسه چیه؟ وقتی روش کلیک کنی موقع کانکشن زدن ارور میگیره
دوست عزیز کمی دقت کن.
کد ها ساده هستند و زیاد سخت برای یادگیری نیست.
کانکشن های ورودی چک کنید.

bitcob589
شنبه 08 مهر 1391, 23:14 عصر
با سلام
این کاری که شما میگید میشود sub زیر sub که 3 تا زیر مجموعه میشود.
این هم شدنی است و نیازمند یک حلقه for تو در توی دیگر است.

اگر امکان دارد یک نمونه منو بگذارید که زیر منو- زیر منو داشته باشد

mehrbani
یک شنبه 19 آذر 1391, 02:21 صبح
بهتره برای افزایش Performance به جای Contact کردن رشته ها از StringBuilder استفاده کنین
نکته ای اندر باب Application Performance :)

fakhravari
چهارشنبه 14 فروردین 1392, 12:47 عصر
باید جای ادرس در دیتابیس ادرس صفحه بزاری.

monadifard
شنبه 17 فروردین 1392, 00:17 صبح
ممنون از پاسختون
توی نمونه کدی که گذاشتید چطوری باید آیدی منو با کوئری استرینگ یا هرچیز دیگه را ارسال کنیم که توی صفحه ای که با کلیک کردن روی منو رفت اطلاعات مربوط به منوی انتخابی نمایش داده بشه ؟
توی کدوم قسمت از کد ها باید نوشته بشه ؟

hamid_kha
یک شنبه 16 تیر 1392, 00:04 صبح
خب مراحل به ترتیب جلو میریم.
اول باید موضوعات اصلی را داشته باشیم.
ساختار جدول
CREATE TABLE [dbo].[Roots](
[ID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Url] [nvarchar](50) NOT NULL)


INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (1, N'Web Site', N'www.Web Site.com')
INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (2, N'Reporting', N'www.Reporting.com')
INSERT [dbo].[Roots] ([ID], [Name], [Url]) VALUES (3, N'mohandesi', N'www.mohandesi.com')

خب بعد موضوعات اصلی به زیر منو میرسیم
که ساختار جدول به این شکل است

CREATE TABLE [dbo].[Leafs](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ParentID] [int] NULL,
[Name] [varchar](50) NOT NULL,
[Url] [nvarchar](50) NOT NULL)


INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (9, 1, N'html', N'www.html.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (11, 1, N'asp', N'www.asp.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (12, 1, N'php', N'www.php.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (13, 2, N'cristal', N'www.cristal.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (14, 2, N'stiult', N'www.stiult.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (15, 2, N'quecriport', N'www.quecriport.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (16, 3, N'uml', N'www.uml.com')
INSERT [dbo].[Leafs] ([ID], [ParentID], [Name], [Url]) VALUES (17, 3, N'ros', N'www.ros.com')

بعد از ساختن جداول نوبت به جای خوشمزه پیاده سازیش میرسه
متذ های مورد نیاز
گرفتن کل اطلاعات موضوعات
public DataTable GetParents()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=COMPUTER1\SQLEXPRESS;Initial Catalog=TableHome;Integrated Security=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Roots", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}
متد بعدی فراخوانی کل زیر بخش موضوعات
public DataTable GetMenuByParentID(int parentId)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=COMPUTER1\SQLEXPRESS;Initial Catalog=TableHome;Integrated Security=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from Leafs where ParentID=@ParentID", con);
cmd.Parameters.AddWithValue("@ParentID", parentId);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
}
خب متد هامون تموم شد حالا مراحل ساخت بر اساس جداول بالا.
protected void Page_Load(object sender, EventArgs e)
{
DataTable GetParentsDB = GetParents();
int rowdt1 = GetParentsDB.Rows.Count;
DataTable dt;


string Marquee = "<ul id=\"jDesign_menu\">";

for (int i = 0; i < rowdt1; i++)
{

dt = new DataTable();
dt = GetMenuByParentID(int.Parse(GetParentsDB.Rows[i]["ID"].ToString()));
int id1 = 0;
id1 = dt.Rows.Count;
if (dt.Rows.Count > 0)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}
else
{
Marquee += String.Format("<li><a href=\"{0}\" class=\"jDesign_subs\">{1}</a>", GetParentsDB.Rows[i]["Url"].ToString(), GetParentsDB.Rows[i]["Name"].ToString());
}

if (dt.Rows.Count > 0)
{
Marquee += "<ul class=\"subs\">";

for (int b = 0; b < id1; b++)
{
Marquee += String.Format("<li><a href=\"{0}\">{1}</a></li>", dt.Rows[b]["Url"].ToString(), dt.Rows[b]["Name"].ToString());
}
Marquee += "</ul>";
}
else
{
Marquee += "</li>";
}
}


Marquee += "</ul>";

Literal1.Text = Marquee;


}


و مرحله آخر
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="menu.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<center>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</center>
</form>
</body>
</html>
بعد ببنید و لذت ببرید:بامزه:
ساختار برنامه جوری که تا N اگر روش کار کنی زیر مجموعه میتونه داشته باشه.
با سلام آقای فخرآفری
بنده کد شما رو استفاده کردم و یه خورده بازنویسیش کردم.
مشکل عجیبی که وجود داره اینه که من از Routing استفاده کردم و در زمانی که در صفحه اصلی سایت هستم وقتی روی منو میرم- اون mapping درست عمل میکنه(آدرسه درسته) -ولی وقتی توی اون صفحه ای که map شده(ShowPageGroups.aspx) و باید اطلاعات رو بخونه وقتی میرم و سپس روی همون لینک بالای صفحه میرم آدرسه تغییر میکنه در صورتی که در صفحه اصلی لینکه آدرسش درسته!
امیدوارم متوجه شده باشید
کدC#‎

DataTable GetParentsDB = GetParents();
int rowdt1 = GetParentsDB.Rows.Count;
DataTable dt;


string Marquee = "<ul class=\"sub-menu\">";

for (int i = 0; i < rowdt1; i++)
{

dt = new DataTable();
dt = GetMenuByParentID(int.Parse(GetParentsDB.Rows[i]["PageGroupID"].ToString()));
int id1 = 0;
id1 = dt.Rows.Count;
if (dt.Rows.Count > 0)
{
Marquee += String.Format("<li class=\"child\"><a href=\"{1}/{0}\"><span>{0}</span></a>", GetParentsDB.Rows[i]["PageGroupTitle"].ToString(),GetParentsDB.Rows[i]["PageGroupID"].ToString());
}
else
{
Marquee += String.Format("<li><a href=\"{1}/{0}\"><span>{0}</span></a>", GetParentsDB.Rows[i]["PageGroupTitle"].ToString(), GetParentsDB.Rows[i]["PageGroupID"].ToString());

}

if (dt.Rows.Count > 0)
{
Marquee += "<ul class=\"child-menu\">";

for (int b = 0; b < id1; b++)
{
Marquee += String.Format("<li><a href=\"{0}/{1}/{2}\"><span>{2}</span></a></li>", dt.Rows[b]["PageID"].ToString(), GetParentsDB.Rows[i]["PageGroupTitle"].ToString(), dt.Rows[b]["PageTitle"].ToString());
}
Marquee += "</ul>";
}
else
{
Marquee += "</li>";
}
}


Marquee += "</ul>";

Literal1.Text = Marquee;


}


کد Global:

protected void Application_Start(object sender, EventArgs e)
{
Application.Add("Online", 0);
//Application.Add("Site", "http://localhost:2877");

RouteTable.Routes.MapPageRoute("PageGroups", "{pagegroupid}/{pagegrouptitle}", "~/ShowPageGroups.aspx");
RouteTable.Routes.MapPageRoute("PageDetails", "{pageid}/{pagegrouptitle}/{pagetitle}", "~/ShowPageDetail.aspx");
RouteTable.Routes.MapPageRoute("PagePrints", "print/{pagegroupid}/{pageid}/{pagetitle}", "~/PagePrint.aspx");

}

کد html:

<li><a href="#"><span><strong>محصولات</strong></span></a>

<asp:Literal ID="Literal1" runat="server"></asp:Literal>

</li>و اینم عکسش:
106752
واقعا موندم مشکل از چیه؟
trace هم کردم خروجیش درسته- ولی وقتی اجراش میکنم نمیدونم چرا اینجوری میشه؟!
مرسی بخاطر راهنمایی تون:لبخندساده:

hamid_kha
یک شنبه 16 تیر 1392, 19:39 عصر
سلام دوستان
کسی نیست یه کمکی کنه؟؟؟؟!!!!
منتظرم:افسرده::متعجب::گریه: