PDA

View Full Version : pager با سرعت بالا برای دیتالیست



neda555
سه شنبه 08 دی 1394, 20:07 عصر
سلام دوستان وقت بخیر
من یک pager برای دیتالیست میخوام که سرعتش بالا باشه یعنی در برایر محتوای زیاد صفحه سریع باز بشه کسی میتونه کمک کنه ؟

aminmousavi
چهارشنبه 09 دی 1394, 00:11 صبح
سلام دوست عزیز . وقتی شما دیتاتون زیاد هست، نوع کنترل کمکی بهتون نمیکنه، به واکشی اطلاعات مربوط میشه. شما باید با sql صفحه بندی کنین که سرعت خوبی توی دیتاهای بالا داشته باشین .

neda555
چهارشنبه 09 دی 1394, 21:04 عصر
بله درسته ممنون کد SQl اوکی هست میشه کد C#‎‎‎ رو واسم بزارید لطفا

juza66
جمعه 11 دی 1394, 18:51 عصر
بنظرم صفحه بندی کنید. البته اگر درست متوجه شده باشم.

شما در موقع لود صفحه، اطلاعات رو دریافت کن بریز تویی دیتاآداپتر و بعدش اطلاعات رو پاس بده به دیتاست و قبل از فراخونی اون تویی صفحه سلکت کن اون تعداد اطلاعاتی رو که میخوای. بعدش همه اطلاعات رو تقسیم بر اون تعدادی کن که میخوای نمایش بدی. جواب بدست اومده میشه همون تعداد صفحاتت بعدش به ازای تعداد صفحات button بساز و همزامان با خوندنش و ساخت دکمه براشون شماره بذار و یک لینک که مثلا دکمه اولی 1 تا 30 دومی 31 تا 60 و الی....

neda555
شنبه 12 دی 1394, 19:05 عصر
بنظرم صفحه بندی کنید. البته اگر درست متوجه شده باشم.

شما در موقع لود صفحه، اطلاعات رو دریافت کن بریز تویی دیتاآداپتر و بعدش اطلاعات رو پاس بده به دیتاست و قبل از فراخونی اون تویی صفحه سلکت کن اون تعداد اطلاعاتی رو که میخوای. بعدش همه اطلاعات رو تقسیم بر اون تعدادی کن که میخوای نمایش بدی. جواب بدست اومده میشه همون تعداد صفحاتت بعدش به ازای تعداد صفحات button بساز و همزامان با خوندنش و ساخت دکمه براشون شماره بذار و یک لینک که مثلا دکمه اولی 1 تا 30 دومی 31 تا 60 و الی....

ممنون این کدی هست که قبلا استفاده میکردم الان که صفحه بندی رو در سمت sql انجام میدم چه طور تغییرش بدم ؟ بهینه بودن هم واسم مهمه ممنون میشم کدش رو واسم اصلاح کنید یا یک نمونه بزارید.

using System;using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;


namespace clinicbeton.Pages
{
public partial class ClinicNews : System.Web.UI.Page
{
#region Private Properties
private int CurrentPage
{
get
{
object objPage = ViewState["_CurrentPage"];
int _CurrentPage = 0;
if (objPage == null)
{
_CurrentPage = 0;
}
else
{
_CurrentPage = (int)objPage;
}
return _CurrentPage;
}
set { ViewState["_CurrentPage"] = value; }
}
private int fistIndex
{
get
{


int _FirstIndex = 0;
if (ViewState["_FirstIndex"] == null)
{
_FirstIndex = 0;
}
else
{
_FirstIndex = Convert.ToInt32(ViewState["_FirstIndex"]);
}
return _FirstIndex;
}
set { ViewState["_FirstIndex"] = value; }
}
private int lastIndex
{
get
{


int _LastIndex = 0;
if (ViewState["_LastIndex"] == null)
{
_LastIndex = 0;
}
else
{
_LastIndex = Convert.ToInt32(ViewState["_LastIndex"]);
}
return _LastIndex;
}
set { ViewState["_LastIndex"] = value; }
}
#endregion


#region PagedDataSource
PagedDataSource _PageDataSource = new PagedDataSource();
#endregion


#region Private Methods
/// <summary>
/// Build DataTable to bind Main Items List
/// </summary>
/// <returns>DataTable</returns>
private DataTable GetDataTable()
{
int type = int.Parse(Page.RouteData.Values["type"].ToString());
DataTable dtItems = new DataTable();
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("SPSelectNewsbyType ", con);
cmd.Parameters.Add("Type", SqlDbType.Int).Value = type;
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
da.Fill(dtItems);
con.Close();
return dtItems;
}


/// <summary>
/// Binding Main Items List
/// </summary>
private void BindItemsList()
{


DataTable dataTable = this.GetDataTable();
_PageDataSource.DataSource = dataTable.DefaultView;
_PageDataSource.AllowPaging = true;
_PageDataSource.PageSize = 12;
_PageDataSource.CurrentPageIndex = CurrentPage;
ViewState["TotalPages"] = _PageDataSource.PageCount;


this.lblPageInfo.Text = "صفحه " + (CurrentPage + 1) + " از " + _PageDataSource.PageCount;
this.lbtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
this.lbtnNext.Enabled = !_PageDataSource.IsLastPage;
this.lbtnFirst.Enabled = !_PageDataSource.IsFirstPage;
this.lbtnLast.Enabled = !_PageDataSource.IsLastPage;


this.Repeater1.DataSource = _PageDataSource;
this.Repeater1.DataBind();
this.doPaging();
}


/// <summary>
/// Binding Paging List
/// </summary>
private void doPaging()
{
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");


fistIndex = CurrentPage - 5;




if (CurrentPage > 5)
{
lastIndex = CurrentPage + 5;
}
else
{
lastIndex = 10;
}
if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
{
lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
fistIndex = lastIndex - 10;
}


if (fistIndex < 0)
{
fistIndex = 0;
}


for (int i = fistIndex; i < lastIndex; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}


this.dlPaging.DataSource = dt;
this.dlPaging.DataBind();
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

this.BindItemsList();
Repeater1.DataBind();
}
}
protected void lbtnNext_Click(object sender, EventArgs e)
{


CurrentPage += 1;
this.BindItemsList();


}
protected void lbtnPrevious_Click(object sender, EventArgs e)
{
CurrentPage -= 1;
this.BindItemsList();


}
protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("Paging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
this.BindItemsList();
}
}
protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
{
LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
{
lnkbtnPage.Enabled = false;
lnkbtnPage.Style.Add("fone-size", "14px");
lnkbtnPage.Font.Bold = true;


}
}
protected void lbtnLast_Click(object sender, EventArgs e)
{


CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
this.BindItemsList();


}
protected void lbtnFirst_Click(object sender, EventArgs e)
{


CurrentPage = 0;
this.BindItemsList();




}
}
}

neda555
دوشنبه 14 دی 1394, 19:21 عصر
دوستان لطفا راهنمایی کنید :افسرده:

bahar0011
دوشنبه 14 دی 1394, 20:23 عصر
دوستان لطفا راهنمایی کنید :افسرده:

میتونید ORM تون رو عوض کنید از Entity FrameWork استفاده کنید.

ولی برای دیتاهای خیلی زیاد سرعتش زیاد خوب نیست


var res = users.Skip((jtStartIndex / jtPageSize) * (jtPageSize)).Take(jtPageSize);