PDA

View Full Version : استفاده از Repeater به صورت تو در تو



NeverBackDown
شنبه 03 اردیبهشت 1390, 12:25 عصر
سلام
من مي خوام يه forum بسازم و تو صفحه اول سايتم كه forum و sumForum رو نشون مي ده گير كردم.
از دو تا جدول براي نشون دادن forum و subforum استفاده كردم و مي خوام هر subforum زير forum خودش قرار بگيره . برا اين كار تو جدول subforum يه فيلد به اسم pid دارم كه برابر با اي دي forum
جداول:
69071

يعني مي خوام select جدول subforum اينجوري باشه:
select * from subfrom,forum where pid=id

فعلا كدم اينه:




<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [Forum]"></asp:SqlDataSource>

<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [SubForum]"></asp:SqlDataSource>

<div id="mean">
<asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1" runat="server">
<ItemTemplate>
<div id="macro_head">
<h4>
<%# Eval("title") %>
</h4>
</div>
<div id="macro_body">
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSource2">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate >
<li style="display:block;"><a href="#"><%#Eval("title") %></a></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>

</div>
</ItemTemplate>
</asp:Repeater>




مي خوام قبل ريپيتر دوم مقدار id تغيير كه تا زير subforum مربوط به خودش زيرش قرار بگيره.
كدم درست كار نمي كنه يعني بلد نيستم چطوري مقدار id رو تغيير بدم.
حالا مي خوا بدونو اين راهي كه رفتم درسته ؟
بعد چطوري مي تونم id رو تغيير بدم؟
اصلا مي شه دو تا ريپيتر تودرتو رو مثل دوتا حلقه تودر تو استفاده كرد؟
اگه راهم اشتباه يا راه بهتري بلديد لطفا كمك كنيد.
مي خوام صفحه اول سايتم مثل صفحه اول برنامه نويس بشه.
يه همچين چيزي مي خوام:


69074

masoudasgari
شنبه 03 اردیبهشت 1390, 13:39 عصر
سلام
یه متد بنویس که با استفاده از آی دی ای که بهش پاس میدی یه Data Table برگردونه بعد Data source ریپیتر داخلیرو این متده بزار
بعدش هم اینجوری صداش کش
<%#MyMethod(Eval.DataBinder(Container.DataItem,"Id")%>

NeverBackDown
شنبه 03 اردیبهشت 1390, 13:55 عصر
ميشه كدي كه گزاشتمو اونجور كه ميگي تغيير بدي؟
اصلا برا كاري كه مي خوام بكتم اين روش درسته؟

NeverBackDown
شنبه 03 اردیبهشت 1390, 14:05 عصر
كسي نيست به دادم برسه؟:گریه::گریه::گریه:

NeverBackDown
شنبه 03 اردیبهشت 1390, 14:35 عصر
تو رو خدا يكي جواب بده

NeverBackDown
شنبه 03 اردیبهشت 1390, 18:18 عصر
يعني هيچ كس نيست كه بتونه جواب بده؟

b.paseban
شنبه 03 اردیبهشت 1390, 19:15 عصر
سلام بر شما.
راه حل رو میتونید از این سورس پیدا کنید.
http://barnamenevis.org/showthread.php?124503-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DB%8C%DA%A9-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86

NeverBackDown
شنبه 03 اردیبهشت 1390, 19:23 عصر
من اينو دارم ولي كار نمي كنه ؟
خودت نمي توني بگي چيكار كنم؟

b.paseban
شنبه 03 اردیبهشت 1390, 19:57 عصر
برای چی کار نمیکنه؟
راه حل منم همونه که توی این سورسه.
قسمت furom اون بری همین کار رو انجام داده.اومده یه gridview رو به دیتابیس متصل کرده و تمامی category های انجمن رو خونده و داخل همون gridview اومده یه gridview دیگه گذاشته(gridview2)
بعد توی همون griview اولی اومده از OnRowDataBound="GridView_ArchivNews_RowDataBound" استفاده کرده و سمت codebehind اومده این تکه کد رو نوشته:



protected void GridView_ArchivNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
GridViewRow row = e.Row;
if (row.DataItem == null)
{
return;
}
GridView gridview2 = (GridView)row.FindControl("GridView2");
Label Label_ID = (Label)row.FindControl("Label2");
gridview2.DataSource = SDKClass.Forums_ForumListByForumID(Int32.Parse(Lab el_ID.Text));
gridview2.DataBind();
}

توی اینجا SDKClass یک کلاسه که متدهای این سایت داخل این کلاس قرار داره و Forums_ForumListByForumID یکی از همین توابع هست که اینه کدش:



public static SqlDataReader Forums_ForumListByForumID(int id)
{
string ConnectionString = SafaConnectionString.ConnectionString;
SqlConnection Connection = new SqlConnection(ConnectionString);
SqlCommand Command = new SqlCommand("Forums_ForumsList", Connection);
Command.CommandType = CommandType.StoredProcedure;
Command.Parameters.AddWithValue("CategoryID", id);
Connection.Open();
return Command.ExecuteReader();
}


Forums_ForumsList یه پروسیجره توی دیتا بیس.
این تکه کد میاد تمامی فیلدهای دیتا بیس Forums_Forums رو میخونه اما بشرطیکه CategoryID = @CategoryID .
همه اینها توی همین سورسه.