PDA

View Full Version : سوال: مشکل در صفحه بندی اطلاعات



Fartaj
پنج شنبه 24 فروردین 1391, 20:28 عصر
سلام خدمت دوستان

من در پروژه کتابخانه در صفحه جستجو از کد زیر برای جستجو استفاده کردم :



string w_name;
string b_name;
SqlDataAdapter Dta = null;
DataSet Ds = null;
b_name = txtb_name.Text;
w_name = txtw_name.Text;

SqlCommand com = newSqlCommand("select * from book Where b_name Like
N'%'+@b_name+'%' and bsubject Like N'%'+@w_name+'%'"

, cs);

com.Parameters.AddWithValue(
"@b_name",b_name);

com.Parameters.AddWithValue(
"@w_name",w_name);

try

{

Dta =
newSqlDataAdapter(com);
Ds =
newDataSet();
Dta.Fill(Ds,
"book");
GridView1.DataSource = Ds;
GridView1.DataBind();
}
finally
{
if (((com != null)))
com.Dispose();
if (((Dta != null)))
Dta.Dispose();
}



و برای صفحه بندی اطلاعات از همون paging خود grid استفاده کردم مشکل اینجاست که وقتی کاربر روی دکمه جستجو کلیک می کنه نتایج با صفحه بندی نشون داده می شه اما وقتی می زنی بره صفحه دوم چون صفحه دوباره لود می شه و تو page load دستوری وجود نداره دیگه اطلاعاتی نشون نمی ده ممنون می شم اگه راهی برای صفحه بندی توضیح بدید

sarapepors
پنج شنبه 24 فروردین 1391, 20:39 عصر
سلام بعد از صفحه بندی باید گرید ویوتون رو دوباره بایند کنید با توجه به نتایج جستجو. در همون رویداد pageindexchanging

Fartaj
پنج شنبه 24 فروردین 1391, 20:58 عصر
این کد رو هم گزاشتم :






protected void GridView1_PageIndexChanging(object sender,

GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;


GridView1.DataBind(); }


صفحه بندی رو نشون می ده اما به محض اینکه روی صفحه دوم کلیک می کنم و صفحه رفرش می شه دیگه اطلاعات صفحه دوم رو نشون نمی ده ؟؟؟؟

این رو هم بگم که جاهایی که grid رو تو page load پر کردم صفحه بندی درست کار می کنه

sarapepors
جمعه 25 فروردین 1391, 01:05 صبح
خوب الان این کدی که نوشتید توی پیج ایندکس که اصلا به کار نمیاد ببینید اگر اشتباه نکنم شما یه صفحه جستجو دارید که بعد از این که کاربر اطلاعاتی رو وارد کرد بر اساس اون عمیلیات جستجو انجام میشه خوب شما عین همون عملیات رو باید دوباره در درون رویداد pageindexchanging انجام بدین منظورم از بایند کردن این نبود که فقط این کد databind رو بنویسید . از نظر من شما دو راه دارید یکی همین هست که همه عملیات مربوط به جستجو در رویداد پیج ایندکس چنجینگ امجام بدین یا این که از یک sqldatasource کمک بگیرید به این صورت که selectedCommand مربوط به sqldatasource رو برابر با یک storedProcedure قرار بدید که پارامتر هاش رو از کنترلا ها مرتبط با جستجوی شما بگیره شما تو کدی که نوشتین دو پارامتر دارید میتونید در تنظیمات مربوط یه selectCommand sqldataSource اون پارامترها رو رو از خاصیت تکست تکست باکسهای مربوطه بخونید و گریدویو رو هم در همون ابتدا به این sqldatasource بایند کنید در این حالت کد ggridview.databind در رویداد پیج ایندکس معنی داره و کارایی
امیدوارم خوب توضیح داده باشم:لبخندساده:

d_derakhshani
جمعه 25 فروردین 1391, 01:38 صبح
دوست گرامي وقتي از datatable و dataset استفاده مي كنيد ديگه عمليات sort، page و... ديگه كار نمي كنه.
اگه مي خواهيد كار كنه من در اين پست روش اين كار رو توضيح دادم:
http://barnamenevis.org/showthread.php?334309-%D8 (http://barnamenevis.org/showthread.php?334309-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF-%D9%88%DB%8C%D9%88-%DA%A9%D8%AF%D8%A7%D9%85-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA-dataset-%DB%8C%D8%A7-sqlDataSource&p=1476438#post1476438)

sarapepors
جمعه 25 فروردین 1391, 17:53 عصر
دوست گرامي وقتي از datatable و dataset استفاده مي كنيد ديگه عمليات sort، page و... ديگه كار نمي كنه.
اگه مي خواهيد كار كنه من در اين پست روش اين كار رو توضيح دادم:
http://barnamenevis.org/showthread.php?334309-%D8 (http://barnamenevis.org/showthread.php?334309-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF-%D9%88%DB%8C%D9%88-%DA%A9%D8%AF%D8%A7%D9%85-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A7%D8%B3%D8%AA-dataset-%DB%8C%D8%A7-sqlDataSource&p=1476438#post1476438)

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

ghbn1362
جمعه 25 فروردین 1391, 18:32 عصر
این یک نمونه کد برای صفحه بندی بسیار حرفه ای و انعطاف پذیر

d_derakhshani
شنبه 26 فروردین 1391, 09:46 صبح
خاصیت paging از کار نمیفته فقط باید دوباره در رویداد pageindexchanging گرید ویو به آخرین اطلاعات جستجو شده بایند بشه یعنی عین عملیات جستجو دوباره در رویداد مربوطه نوشته بشه البته خوب این باعث میشه که کد تکرار بشه و من نمیخوام بگم که این کار درسته اما میشه یعنی صفحه بندی انجام میشه من این کار رو انجام دادم.
دوست عزیز paging از کار میافته. مگر اینکه شما در یا در همون رویداد PageIndexChanging دوباره کل اطلاعات رو از دیتابیس بارگذاری کنید یا در Load صفحه(یعنی شرط IsPostBack! رو نذارید). خوب که دیگه به این Paging نمی گن. چون خاصیت cache کردن رو از دست میده و performance پایین میاد. برای اینکه این مشکل بروز نکنه و استفاده مستقیم شما از ADO.Net مانند DataSource عمل کنه راهش همونه که لینک پستش و قرار دادم