PDA

View Full Version : نمایش محصولات با دیتا لیست یا لیست ویو؟



sara_aryanfar
سه شنبه 05 اردیبهشت 1391, 18:42 عصر
با سلام من نیاز دارم که محصولات رو در سه ستون نمایش بدم با امکان اینکه محصولات دیگر در صفحات بعدی باشه یعنی پیجینگ بشه از کدوم کنترل استفاده کنم و چطور پیچینگ کنم

hamid_shrk
سه شنبه 05 اردیبهشت 1391, 20:07 عصر
با سلام ، شما میتونید از دیتا لیست هم استفاده کنید.

sara_aryanfar
سه شنبه 05 اردیبهشت 1391, 20:17 عصر
دیتا لیست چطوری paging میشه من در سایت اقای دلشاد دیدم که ایشون لیست ویو رو بهتر دونسته بودن در مورد paging

hamid_shrk
سه شنبه 05 اردیبهشت 1391, 20:27 عصر
بعید میدنم فرقی بکنه :
من معمولا از این روش برای paging استفاده مکینم ، ولی خوب میشه بهینه ترش هم کرد :


PagedDataSource pds = new PagedDataSource();
pds.DataSource = ObjectDataSource1.Select();
pds.AllowPaging = true;
pds.PageSize = Convert.ToInt32(ComboCount.SelectedValue);
int cur;
int count = 0;

decimal PdsCount = Convert.ToDecimal(pds.DataSourceCount) / Convert.ToDecimal(pds.PageSize);
String s = PdsCount.ToString();
String[] test = s.Split('.');
if (test.Count() > 1 && Convert.ToDecimal(test[1]) > 0)
PdsCount = Convert.ToDecimal(test[0]) + 1;

if (Request.QueryString["page"] != null)
cur = Convert.ToInt32(Request.QueryString["page"]);
else
cur = 1;
pds.CurrentPageIndex = cur - 1;




LitPage.Text += "<a class='Repeater'>صفحه " +Persia.Number.ConvertToPersian( Convert.ToString(pds.CurrentPageIndex + 1)) + " از " +Persia.Number.ConvertToPersian( Convert.ToString(PdsCount)) + "</a>";

if (pds.CurrentPageIndex + 1 > 1)
{
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + 1 + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group="+group+"'>ابتدا</a>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'><</a>";
LitPage.Text += "<P class='PReap'>.......</p>";
}

for (int i = 1; i <= PdsCount; i++)
{
if (i >= pds.CurrentPageIndex)
{

if (count < 3)
{
count++;
if (pds.CurrentPageIndex + 1 == i)
LitPage.Text += "<a class='RepeaterSelected' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";
else
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";

}
}
}
if (pds.CurrentPageIndex + 1 != PdsCount)
{
LitPage.Text += "<P class='PReap'>.......</p>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex + 2) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>></a>";

LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(PdsCount) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>انتها</a>";
}


dl.DataSource = pds;
dl.DataBind();

kingmech
چهارشنبه 06 اردیبهشت 1391, 11:42 صبح
بعید میدنم فرقی بکنه :
من معمولا از این روش برای paging استفاده مکینم ، ولی خوب میشه بهینه ترش هم کرد :

توی پی جینگ باید دیتاسورس دیتا لیست باید شامل کل مقادیر دیتابیس باشه ؟ یا مثلا ما بزنیم تو دستور sql که top 10 مثلن بعد پیجینگ کنیم ده تا میر جلو ؟

A.S.Roma
چهارشنبه 06 اردیبهشت 1391, 12:05 عصر
ترکیب objectDataSource و Listview و asp.net pager می تونه به راحتی برای شما Paging بهینه رو فراهم بیاره.
توضیح اینکه asp.net pager به سادگی دیتای کنترل Listview رو صفحه بندی می کنه. ( کلا" هر کنترلی که اینترفیس IPageableItemContainer رو Implement کرده باشه می تونه با pager دات نت کار کنه. )
ObjectDataSource هم دو تا Property داره به نام SelectMethod و SelectMethodCount که در واقع delegateهایی هستند به متدهایی که شما ، در اون متدها پیجینگ رو هندل می کنید.