PDA

View Full Version : کار با data pager و data list



BestFriend
جمعه 15 مهر 1390, 12:04 عصر
با سلام من اطلاعاتم رو با دیتا لیست نشون دادم و میخوام اون رو صفحه بندی کنم باید چی کارکنم ؟ من تاحالا با data pager کار نکردم

با تشکر.

123456789m
شنبه 16 مهر 1390, 01:24 صبح
لطفا جواب بدین .

fakhravari
شنبه 16 مهر 1390, 01:56 صبح
مثال

<asp:DataList ID="dlPaging" runat="server" RepeatColumns="2">
<ItemTemplate>
<asp:Image ID="img1" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem,"imageURL") %>' />
<asp:Label ID="Label2" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"imageName") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>
شماره صفحه
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FetchDataToDataList();
}

}
private void FetchDataToDataList()
{
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand("select imageUrl,imageName from image", con);
con.Open();
PagedDataSource pagedDS = new PagedDataSource();
DataTable dt = new DataTable("_T");
dt.Load(cmd.ExecuteReader());
pagedDS.DataSource = dt.DefaultView;
pagedDS.AllowPaging = true;
pagedDS.PageSize = 2;
pagedDS.CurrentPageIndex = CurrentPage;
dlPaging.DataSource = pagedDS;
dlPaging.DataBind();
con.Close();

lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pagedDS.PageCount.ToString();
cmdPrev.Enabled = !pagedDS.IsFirstPage;
cmdNext.Enabled = !pagedDS.IsLastPage;
}
public int CurrentPage
{
get
{
object o = this.ViewState["_CurrentPage"];
if (o == null)
return 0;
else
return (int)o;
}

set
{
this.ViewState["_CurrentPage"] = value;
}
}
protected void cmdPrev_Click(object sender, EventArgs e)
{
CurrentPage -= 1;
FetchDataToDataList();
}
protected void cmdNext_Click(object sender, EventArgs e)
{
CurrentPage += 1;
FetchDataToDataList();
}

تو سایت بگردی هست

m_akbari11
چهارشنبه 06 دی 1391, 23:56 عصر
سلام دوستان .
این روش اگر تعداد رکوردها خیلی بالا بره فکر نمیکنید که زمان سرور رو خواهد گرفت ؟؟ با توجه به اینکه ابتدا کل جدول خوانده شده و در دیتا تیبل ریخته میشود .
مثلا 7000 رکورد ابتدا خوانده شده و در دیتا تیبل ریخته میشود و سپس در هنگام نمایش ، صفحه به صفحه نمایش میدهد ؟
البته این نظر بنده هستش و به نظر بنده شاید بهتر باشه ، با استفاده از TOP و Where روی جدول بانک اطلاعاتی ، هزینه رو کمتر کنیم.
(معمولا کاربران صفحه اول یا دوم را ملاحظه میکنند و هیچوقت تا آخرین صفحه ، پیج ها رو مرور نمی کنند. و با روش فوق ، سرعت بالا آمدن صفحات در مواردی که تعداد رکوردها زیاد شود بسیار پایین خواهد آمد . )

اگر نظر بنده رو میخواهید ، در مواردی که ممکنه تعداد صفحات شما خیلی بالا برود ، هرگز از این روش استفاده نکنید .

malloc
پنج شنبه 07 دی 1391, 01:09 صبح
سلام دوستان .
این روش اگر تعداد رکوردها خیلی بالا بره فکر نمیکنید که زمان سرور رو خواهد گرفت ؟؟ با توجه به اینکه ابتدا کل جدول خوانده شده و در دیتا تیبل ریخته میشود .
مثلا 7000 رکورد ابتدا خوانده شده و در دیتا تیبل ریخته میشود و سپس در هنگام نمایش ، صفحه به صفحه نمایش میدهد ؟
البته این نظر بنده هستش و به نظر بنده شاید بهتر باشه ، با استفاده از TOP و Where روی جدول بانک اطلاعاتی ، هزینه رو کمتر کنیم.
(معمولا کاربران صفحه اول یا دوم را ملاحظه میکنند و هیچوقت تا آخرین صفحه ، پیج ها رو مرور نمی کنند. و با روش فوق ، سرعت بالا آمدن صفحات در مواردی که تعداد رکوردها زیاد شود بسیار پایین خواهد آمد . )

اگر نظر بنده رو میخواهید ، در مواردی که ممکنه تعداد صفحات شما خیلی بالا برود ، هرگز از این روش استفاده نکنید .

دوست من ، من بجز روشی که آقای فخرآوری گفت روشه دیگع ای ندیدم . اگه روش بهینه تری بلدید لطفا به اشتراک بزارید