PDA

View Full Version : سوال: کمک: گذاشتن paging برای datalist یا کنترلی که کار datalist را انجام دهد



s.iran
دوشنبه 11 خرداد 1388, 01:25 صبح
سلام دوستان
میخوام چند ستون را در یک سطر نشون بدم میدونم این کار را باید با datalist انجام بدم ولی میخوام خاصیت paging هم داشته باشه، چه جوری میشه برای datalist هم مثل gridview خاصیت paging گذاشت؟؟؟
دوستان اگر نظری در مورد استفاده از کنترل دیگری به جای datalist دارند که بتونه کار خواسته شده را انجام دهد راهنمایی کنند.
با تشکر

Alireza Orumand
دوشنبه 11 خرداد 1388, 08:52 صبح
سلام
در مورد کنترل دیگه هم اگر از VS 2008 و ASP.net 3.5 استفاده میکنید میتونید از کنترل list view (که به قول آقای راد حاصل ازدواج Repeater با خودش هست:چشمک:) استفاده کنید. این کنترل هم به شما قابلیت کامل در تنظیم ظاهرش رو میده و هم میتونید برای افزودن خاصیت paging از کنترل datapager استفاده کنید.
اما اگر کماکان اصرار دارید که از datalist استفاده کنید من خودم برای این کار یک کنترل نوشتم که البته بیشتر با repeater کار میکنم. اگر تمایل داشتید میتونید به من ایمیل بدید تا DLL رو براتون ارسال کنم.
موفق باشید.

behzadzh
دوشنبه 11 خرداد 1388, 11:34 صبح
لطفا براي من ارسال کنيد ممنون
b.naderloo@yahoo.com

علی میرجلیلی
دوشنبه 11 خرداد 1388, 12:40 عصر
میشه لطف کنید اون DLL رو برای من هم ارسال کنید . ممنون
mirjalili.ali.1989@gmail.com

mehr83
دوشنبه 11 خرداد 1388, 14:48 عصر
منم میخوام لطفا
msh083@gmail.com

milade
دوشنبه 11 خرداد 1388, 16:10 عصر
سلام دوستان عزیز

کد :

<asp:DataList runat="server" id="dlGallery"
RepeatColumns="4" RepeatDirection="Horizontal">
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<img src="<%#DataBinder.Eval(Container.DataItem,"Image_URL")%>" width="90"
Height="90">
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
//Next/Prev Links.
<table border="0" width="410">
<tr>
<td align="left"><asp:LinkButton ID="lbtnPrev"
Runat="server">Prev</asp:LinkButton></td>
<td align="right"><asp:LinkButton ID="lbtnNext"
Runat="server">Next</asp:LinkButton></td>
</tr>
</table>

کد :

private int imgID;
private string imgTitle;
private string imgURL;
private static int pageSize = 8;
//(This one will hold the no of records return

//i mean "no. of records per page").

private static int pageIndex = 0;
//(This one is for checking the current page).

public DataSet GetAllImagesCustom(int pageIndex, out int outPageIndex)
{

try
{
int count = 0;
DataSet ds = new DataSet();
ds = //retrieve the data from the database.


//for paging

int page = 0;

//checking the whether the pageIndex value is not <First and >Last.

//And if it is then assigning the default

//values for pageIndex and page variables.

if(((pageIndex-1) <= (ds.Tables[0].Rows.Count/pageSize)) &&
(pageIndex-1) >= 0)
{
//If the pageIndex is >=first and =<last then assigning the start position

//eg. if pageIndex = 2 then value of 'page' = 8.

//So in the loop it will add rows to the table

//from the 8 th row.


page = pageSize * (pageIndex-1);
}
else
{
//Assigning default values.

page = 0;
pageIndex = 1;
}


//creating a data table for adding the required rows or u

//can clone the existing table.


DataTable dtImg = new DataTable("Images");
DataColumn newCol = new DataColumn("Image_ID",Type.GetType("System.Int32"));
dtImg.Columns.Add(newCol);//For storing image id.

newCol = new DataColumn("Image_Title",Type.GetType("System.String"));
dtImg.Columns.Add(newCol);//For storing image Title.

newCol = new DataColumn("Image_URL",Type.GetType("System.String"));
dtImg.Columns.Add(newCol);//For storing image URL.

//adding the required rows to the datatable dtImg.

foreach(DataRow nRow in ds.Tables[0].Rows)
{
//if the page=8 and pageIndex =2 then

//rows between 8 to 16(if exists) will be added to the new table.

if(count >= page && count < (pageSize * pageIndex))
{
//Adding rows to the datatable 'dtImg'.

dtImg.Rows.Add(nRow.ItemArray);
}
count++;
}
outPageIndex = pageIndex;
return ds;
}
}
catch(Exception ex)
{
throw ex;
}
}
public void BindList()
{
.....
DataSet ds = new DataSet();
ds = GetAllImagesCustom(Convert.ToInt32(txtPageIndex.Te xt),
out outPageIndex);
dlGallery.DataSource = ds;
dlGallery.DataBind();
//Assigning the new pageIndex value returned from the

//function to the Hidden textbox.

txtPageIndex.Text = Convert.ToString(outPageIndex);
}

کد :


private void lbtnPrev_Click(object sender, System.EventArgs e)
{
//Actual pageIndex -1

txtPageIndex.Text = Convert.ToString(Convert.ToInt32(txtPageIndex.Text ) - 1);
BindList();
}
private void lbtnNext_Click(object sender, System.EventArgs e)
{
//Actual pageIndex +1

txtPageIndex.Text = Convert.ToString(Convert.ToInt32(txtPageIndex.Text ) + 1);
BindList();
}

موفق باشید

s.iran
دوشنبه 11 خرداد 1388, 16:55 عصر
سلام
در مورد کنترل دیگه هم اگر از VS 2008 و ASP.net 3.5 استفاده میکنید میتونید از کنترل list view (که به قول آقای راد حاصل ازدواج Repeater با خودش هست:چشمک:) استفاده کنید. این کنترل هم به شما قابلیت کامل در تنظیم ظاهرش رو میده و هم میتونید برای افزودن خاصیت paging از کنترل datapager استفاده کنید.
اما اگر کماکان اصرار دارید که از datalist استفاده کنید من خودم برای این کار یک کنترل نوشتم که البته بیشتر با repeater کار میکنم. اگر تمایل داشتید میتونید به من ایمیل بدید تا DLL رو براتون ارسال کنم.
موفق باشید.


سلام دوست عزیز
ممنون از جواب.
من از asp.net 2 استفاده می کنم.
اصراری بر استفاده از datalist ندارم . فرق نمی کنه از چه کنترلی استفاده بشه.

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

با سپساس فراوان

mehr83
دوشنبه 11 خرداد 1388, 16:59 عصر
من از طریق ویزارد دیتالیست را به دیتابیس بایند می‌کنم
یعنی از طریق SqlDataSource
با چه کدی میتونم صفحه بندیش کنم؟

Alireza Orumand
شنبه 23 خرداد 1388, 09:34 صبح
سلام به همه دوستان
با عرض شرمندگی از کلیه دوستانی که اینجا و یا به صورت ایمیل درخواست کنترل رو کرده بودن، به خاطر یک سری مشکلات کاری یه مدت خیلی گرفتار بودم. از اونجا که دوستان زیادی درخواست کنترل رو داشتن، به همین خاطر این کنترل رو همینجا میگذارم که همه بتوننن استفاده کنن.
چندتا نکته هست که باید ذکر کنم:
اول اینکه ایده اصلی این کار رو از یه برنامه که از وب گرفتم برداشتم و بعد خودم کاملش کردم. ولی متاسفانه آدرس منبع یادم نیست. امیدوارم صاحب حق خودش از من راضی باشه.
دوم اینکه کار کردن با این کنترل خیلی راحته. سه تا خاصیت اصلی داره PageSize،PageIndexوTotalRecords و یه event هم داره به اسم OnPagerIndexChange که باید handle بشه. یه کمی اگر سرم خلوت بشه یه نمونه پروژه ازش درست میکنم و همراه با سورس کنترل اینجا میذارم ولی تا اون موقع اگر سوالی در مورد نحوه کار کردن کنترل داشتید یا اینکه مشکلی با کنترل وجود داشت لطفا همینجا ذکر کنید و سعی میکنم سریع مشکل رو برطرف کنم.
موفق باشید

reza_moon_mordad
چهارشنبه 14 مرداد 1388, 13:08 عصر
یه event هم داره به اسم OnPagerIndexChange که باید handle بشه.

طریقه handle کردنش رو لطف میکنید؟