Z.Abdollahi
پنج شنبه 30 تیر 1390, 09:03 صبح
با سلام به همه دوستان
من تو صفحه ام تعداد زیادی تب دارم که عنوان و محتوای اونها از طریق یک متد کلاس تولید میشه. محتوای هر تب در یک iframe قرار داره و محتوا عبارت هست از یک صفحه Aspx.
مسئله اینه که محتوای تب ها خیلی زیاد هستن و به علت وجود تعداد زیاد تب ها لود صفحه بسیییییییییییار طول می کشه. می خوام بدونم راهی هست که در لود اولیه صفحه فقط محتوای تب اول لود بشه و محتوای باقی تب ها تنها در صورت کلیک روی اونها لود بشن؟
کد صفحه aspx:
<script language="javascript" type="text/javascript">
$(function () {
$("#tabs ul li").css("float", "right");
$("#tabs").tabs().find(".ui-tabs-nav").sortable({ axis: "x" });
});
</script>
و محل نمایش تب:
<asp:Literal ID="LtrTabs" runat="server"></asp:Literal>
کد کلاس:
public string Build(int ServiceId)
{
string title = " <div class='demo'><div id='tabs'><ul>\n";
string content = "";
DataTable select = new DataTable();
ServicesBLL ser = new ServicesBLL();
select = ser.FormsSelTabs(ServiceId);
int i = 1;
foreach (DataRow row in select.Rows)
{
title += createTitle(row["LinkName"].ToString(), i);
content += createContent(row["LinkHref"].ToString(), i);
i++;
}
title += "</ul>\n";
content += "</div></div>";
return title + content;
}
private string createTitle(string title, int i)
{
string htm = "<li><a href='#tabs-{0}'>{1}</a></li>\n";
htm = string.Format(htm, i, title);
return htm;
}
private string createContent(string content, int i)
{
string htm = "<div id='tabs-{0}'><iframe dir='rtl' frameborder='0' height='100%' width='100%' src='{1}'></iframe></div>\n";
htm = string.Format(htm, i, content);
return htm;
}
و کد cs صفحه aspx:
TabBuilder tab = new TabBuilder();
LtrTabs.Text = tab.Build(1);
من یه چیزایی search کردم ولی تو همه جستجوها تب ها دستی ایجاد می شدن بنابراین به راحتی میشد واسشون یه رویداد onclick گذاشت ولی من نمی دونم چطور باید تو رویداد onclick از متد کلاسم استفاده کنم یا حتی همون متد رو دوباره تعریف کنم.
ممنون از وقتی که میگذارید.
من تو صفحه ام تعداد زیادی تب دارم که عنوان و محتوای اونها از طریق یک متد کلاس تولید میشه. محتوای هر تب در یک iframe قرار داره و محتوا عبارت هست از یک صفحه Aspx.
مسئله اینه که محتوای تب ها خیلی زیاد هستن و به علت وجود تعداد زیاد تب ها لود صفحه بسیییییییییییار طول می کشه. می خوام بدونم راهی هست که در لود اولیه صفحه فقط محتوای تب اول لود بشه و محتوای باقی تب ها تنها در صورت کلیک روی اونها لود بشن؟
کد صفحه aspx:
<script language="javascript" type="text/javascript">
$(function () {
$("#tabs ul li").css("float", "right");
$("#tabs").tabs().find(".ui-tabs-nav").sortable({ axis: "x" });
});
</script>
و محل نمایش تب:
<asp:Literal ID="LtrTabs" runat="server"></asp:Literal>
کد کلاس:
public string Build(int ServiceId)
{
string title = " <div class='demo'><div id='tabs'><ul>\n";
string content = "";
DataTable select = new DataTable();
ServicesBLL ser = new ServicesBLL();
select = ser.FormsSelTabs(ServiceId);
int i = 1;
foreach (DataRow row in select.Rows)
{
title += createTitle(row["LinkName"].ToString(), i);
content += createContent(row["LinkHref"].ToString(), i);
i++;
}
title += "</ul>\n";
content += "</div></div>";
return title + content;
}
private string createTitle(string title, int i)
{
string htm = "<li><a href='#tabs-{0}'>{1}</a></li>\n";
htm = string.Format(htm, i, title);
return htm;
}
private string createContent(string content, int i)
{
string htm = "<div id='tabs-{0}'><iframe dir='rtl' frameborder='0' height='100%' width='100%' src='{1}'></iframe></div>\n";
htm = string.Format(htm, i, content);
return htm;
}
و کد cs صفحه aspx:
TabBuilder tab = new TabBuilder();
LtrTabs.Text = tab.Build(1);
من یه چیزایی search کردم ولی تو همه جستجوها تب ها دستی ایجاد می شدن بنابراین به راحتی میشد واسشون یه رویداد onclick گذاشت ولی من نمی دونم چطور باید تو رویداد onclick از متد کلاسم استفاده کنم یا حتی همون متد رو دوباره تعریف کنم.
ممنون از وقتی که میگذارید.