PDA

View Full Version : سوال: nested repeater (رپیتر های تودر تو)



zahraghoalmi11
چهارشنبه 15 دی 1389, 13:58 عصر
سلام
من دارم یک forum یا همون تالار طراحی میکنم.که فقط در 2 سطح انجام میشه.
بنابر این برای select اطلاعات از 2 جدول category , post باید از رپیتر های تودر تو استفاده کنم.
مخوام بدونم که امکان استفاده از رپیتر های تودرتو به چه شکله.
چون دارم از LINQ استفاده میکنم بیشتر سرچ هایی که تو اینترنت کردم به دردم نخورده.

در ضمن باید بگم مشکل من بکمک litral و حلقه های for تو در تو قابل حله . ولی حدس می زنم سرعت لود شدن صفحه پاین باشه. اینه که می خوام از رپیتر استفاده کنم.

ehsanvahab
چهارشنبه 15 دی 1389, 20:33 عصر
دوست عزیز اول اینکه بارگذاری کدها در سرور ربطی به سرعت نت نداره و با اولین تقاضا صفحه در سمت سرور آماده میشه حالا چه سرعت پایین باشه چه بالا
اما برای استفاده از کنترل هایی نظیر DataGrid ,Repeater,DataList.... یک Event به نام ItemDataBound دارن که میتونی از اونجا کنترلی که داخل اون سطر داره Render میشه رو بگیری
در واقع اگر این کنترل هایی که نام بردم و یک حلقه بدونیم،رویداد ItemDataBound دستور وسط حلقه و هنگام ساخت اون کنترله

zahraghoalmi11
پنج شنبه 16 دی 1389, 12:05 عصر
- پس منظورتون اینه که اگه با حلقه for به ازای هر رکوررد یک سلکت بزنیم و لیترال رو پر کنیم فرقی با استفاده از repeater نداره ؟
آخه با حلقه for خیلی راحت طراحیم رو انجام دادم . از 3 جدول سلکت زدم .

zahraghoalmi11
پنج شنبه 16 دی 1389, 13:25 عصر
با سلام
مشکلم رو حل کردم خواستم تا دوستان هم کدهارو ببینن و استفاده کنند
همونطور که گفتم از LINQ استفاده می کنم.
بکمک این کدها در لود فرمم کار انجام شد


var items = (from c in d.ForumCategories
select new {
catid=c.Id,
catname=c.Name,
post=(from p in d.Posts
where p.Catid_fk==c.Id
select new{
pid=p.Id,
ptitle=p.PostTitle,
pdate=p.PostDate,
user=(from u in d.Users
where u.Id==p.Userid_fk
select u.Nmae).First().ToString()
})
});
rpttopic.DataSource = items;
rpttopic.DataBind();اما نکته html آن
باید به رپیتر دوم data source داد به این صورت :

<asp:Repeater ID="Repeater2" runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "post") %>'>