PDA

View Full Version : مشکل در افزودن paging به Gridview



MJ_PC88
پنج شنبه 22 مهر 1389, 09:38 صبح
سلام
من یک دستور برای جستجو نوشته و از طریق زیر به گریدویو وصل می کنم:

SqlDataReader thisReader = thisCommand.ExecuteReader();

GridView3.DataSource = thisReader;
GridView3.DataBind();


حالا وقتی میخوام Paging گریدویو را فعال کنک خطای زیر رو میده:

**The data source does not support server-side data paging**


_______________________________

کد رو تغییر دادم تا شاید مشکل حل بشه، به این صورت :

SqlDataAdapter ad = new SqlDataAdapter(thisCommand);
DataSet ds = new DataSet();
ad.Fill(ds);
GridView3.DataSource = ds;
GridView3.DataBind();
thisConnection.Close();

اما این بار برای بعد از فعال سازی Pging این خطا رو میده:

**The GridView 'GridView3' fired event PageIndexChanging which wasn't handled**


از دوستان تقاضای کمک و راهنمایی دارم
ممنون

karim orooji
پنج شنبه 22 مهر 1389, 10:14 صبح
با سلام
زمانی که allow paging رو در گرید فعال کنی تنها کافی نیست باید با کمک dataset و ... پر کنی
این کدی برای شما گذاشتم در قسمت GridView1_SelectedIndexChanging میاد یک صفحه جدید متناسب با تنظیم ها نمایش میده




Protected Sub GridView1_SelectedIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) Handles GridView1.SelectedIndexChanging
Dim Dta1 As SqlDataAdapter = Nothing

Dim Ds1 As DataSet
Dim com1 As New SqlCommand("select * from grid ", con)
Try

Dta1 = New SqlDataAdapter(com1)
Ds1 = New DataSet
Dta1.Fill(Ds1, "grid")
GridView1.PageIndex = e.NewSelectedIndex
GridView1.DataSource = Ds1
GridView1.DataBind()
Finally

If (Not com1 Is Nothing) Then com1.Dispose()
If (Not Dta1 Is Nothing) Then Dta1.Dispose()
End Try

End Sub



موفق باشی

MJ_PC88
پنج شنبه 22 مهر 1389, 10:53 صبح
ممنون دوست عزیز
اولا مفهوم select * from grid چیه و آیا منظورت اینه که یعنی من باید تمام کد جستجوم رو داخل رویداد Selected index change تعریف کنم

ثانیا grid در کد روبرو به چه معناست:

Dta1.Fill(Ds1, "grid")





ثالثا من منظورتون از e.NewSelectedIndex رو متوجه نشدم، چنین کدی رو برای من باز نمی کنه

راستی کد جستجوی من به شکل زیره:


string number1 = "aa";
string number2 = "bb";
int i = 0;
if (RegionDrop.Enabled == false)
{

number1 = CityDrop.SelectedValue;
}
else if (RegionDrop.SelectedValue == "28" )
{

number1 = CityDrop.SelectedValue;
i = 1;
}
else
{
number2 = RegionDrop.SelectedValue;

}

if (StateDrop.SelectedIndex == 0)
ErorLbl.Text = "لطفا یک استان را انتخاب نمایید";
else if (CityDrop.SelectedIndex == 0)
ErorLbl.Text = "لطفا یک شهر را انتخاب نمایید";

else if (CityDrop.Enabled == true)
{
SqlConnection thisConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Restaurant;Integrated Security=True");
thisConnection.Open();
SqlCommand thisCommand = thisConnection.CreateCommand();
if (RegionDrop.Enabled == false || i==1)
thisCommand.CommandText = "SELECT * FROM Complex_Details where Id in(Select Id FROM Main where PId=" + number1 + ")'";
else
thisCommand.CommandText = "SELECT * FROM Complex_Details where Id=" + number2 + "";
SqlDataReader thisReader = thisCommand.ExecuteReader();

GridView3.DataSource = thisReader;
GridView3.DataBind();

thisConnection.Close();

raziee
پنج شنبه 22 مهر 1389, 11:07 صبح
برادر این روش Paging به طور کلی اشتباه است.
Paging نباید در صفحه انجام شود.
Paging صحیح در داخل Sql Server هست.

در حالتی که دارین کار میکنید مثلا شما میاد یک ملیون رکورد رو از SQL میگیرید و بعد در یک رویدادی در صفحه 10 رکورد ازش رو میگیرید.(و این اشتباه است)
بهتره همون 10 رکورد رو از دیتابیس درخواست بدید.

در موردش جستجو کنید

mmnoody2006
پنج شنبه 22 مهر 1389, 17:58 عصر
شما دوست عزيز براي رفع مشكلت بايد در گوگل اينو سرچ كنيد :
asp.net gridview custom paging

persian_bigboy
پنج شنبه 22 مهر 1389, 18:16 عصر
برادر این روش Paging به طور کلی اشتباه است.
Paging نباید در صفحه انجام شود.
Paging صحیح در داخل Sql Server هست.

در حالتی که دارین کار میکنید مثلا شما میاد یک ملیون رکورد رو از SQL میگیرید و بعد در یک رویدادی در صفحه 10 رکورد ازش رو میگیرید.(و این اشتباه است)
بهتره همون 10 رکورد رو از دیتابیس درخواست بدید.

در موردش جستجو کنید


گفته دوستمون خیلی متین و صحیح هست . لطفا توجه کنید .این تجربه به اندازه کل عمر شما ارزش داره . اگه پروژه بزرگ انجام بدید باید از سیستم Store استفاده کنید .

majnun
جمعه 23 مهر 1389, 01:17 صبح
http://barnamenevis.org/forum/showthread.php?t=249662