PDA

View Full Version : صفحه بندی گریدویو



maktab
چهارشنبه 12 بهمن 1390, 23:42 عصر
وقتی از کنترل های آماده دات نت مثل sqlDataSource و... استفاده میکنم به راحتی گریدویو صفحه بندی میشه. ولی من میخوام بایند اطلاعات بصورت دستی و linq انجام بشه. مشکلی با نوشتن کدهای linq و Skip و... ندارم. ولی چطور میتونم گریدویو را صفحه بندی کنم. کدهای جلو و عقب را کجا باید بنویسم. البته من میخوام صفحه بندی بصورت همان صفحه بندی معمولی که از 1 شروع میشه و تمام شماره های صفحات را نشون بده.

xalerebvar
چهارشنبه 12 بهمن 1390, 23:50 عصر
من همیشه کدها رو به صورت دستی وارد GridView می کنم و مشکلی با صفحه بندیش ندارم، تنها خاصیت AllowPaging رو برابر True می گیرم و در ضمن تنظیمات مربوط به چگونگی صفحه بندی تو خاصیت Paging موجوده، دقیقتر نگاه بندازید

maktab
چهارشنبه 12 بهمن 1390, 23:59 عصر
من همیشه کدها رو به صورت دستی وارد GridView می کنم و مشکلی با صفحه بندیش ندارم، تنها خاصیت AllowPaging رو برابر True می گیرم و در ضمن تنظیمات مربوط به چگونگی صفحه بندی تو خاصیت Paging موجوده، دقیقتر نگاه بندازید
نمیدونم کجای کار اشتباه هست! من AllowPaging را Trueکردم. تعداد صفحات را مشخص کردم. ولی باز هم شماره های صفحه نمایش داده نمیشه.
اگر ممکنه گام به گام بگید چکار باید بکنم.

xalerebvar
پنج شنبه 13 بهمن 1390, 00:07 صبح
تو قسمت کد نویسی خط زیر رو بصورت دستی اضافه کنید

GridView1.AllowPaging = true;


اگه بازم نشد یکبار GridView رو حذف کرده و دوباره اضافه کنید

maktab
پنج شنبه 13 بهمن 1390, 00:15 صبح
تو قسمت کد نویسی خط زیر رو بصورت دستی اضافه کنید

GridView1.AllowPaging = true;


اگه بازم نشد یکبار GridView رو حذف کرده و دوباره اضافه کنید

من یه GridView از اول گذاشتم و تمام کارها را انجام دادم. ولی حالا شماره صفحات میاد ولی وقتی روشون کلیک میکنم نشون نمیده. باید چکار کنم؟ اگر براتون امکان داره یه نمونه از کاری که میگید را بصورت ساده بزارید. (نمونه برنامه). ممنون

fakhravari
پنج شنبه 13 بهمن 1390, 00:37 صبح
این سوال قبلی شما بود
http://barnamenevis.org/showthread.php?325516-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88
________________

http://barnamenevis.org/showthread.php?325584-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-alowpaging-%DA%AF%D8%B1%DB%8C%D8%AF

maktab
پنج شنبه 13 بهمن 1390, 00:53 صبح
این سوال قبلی شما بود
http://barnamenevis.org/showthread.php?325516-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88


اونجا بحث درباره LinqDataSource بود. البته به نتیجه هم نرسید.

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

xalerebvar
پنج شنبه 13 بهمن 1390, 00:54 صبح
کد مربوط به Design

<asp:GridView ID="GridView1" runat="server"
Height="260px" Width="439px"
AllowPaging="True" DataKeyNames="Id" PageSize="1"
onpageindexchanging="GridView1_PageIndexChanging" EnableModelValidation="false">
</asp:GridView>

کد نویسی

protected void Page_Load(object sender, EventArgs e)
{
SqlConnection Con = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["PagingCon"].ConnectionString);
Con.Open();
SqlDataAdapter da = new SqlDataAdapter("select Id,Name,Family,Address,City from T1 ", Con);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
Con.Close();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
}

maktab
پنج شنبه 13 بهمن 1390, 01:07 صبح
ببینید دوست عزیز xalerebvar، شما دقیقا دارید مثل کنترل های دات نت مثل sqlDataSource عمل میکنید. یعنی برای اولین بار تمام اطلاعات را از بانک میخونید بعد به گریدویو میدید گریدویو هم با توجه به تنظیمات صفحه بندی، تک تک صفحات را نشون میده. خب با این روش مشکلی ندارم و میشه همان طور که شما لطف کردید و گفتید همچنین مثال های زیادی در همین انجمن هست انجام داد.
ولی اگر دقت کردید من توی سوالم گفتم که میخوام با استفاده از skin و... linq این کار را بکنم. یعنی با توجه به دستوراتی که با linq مینویسم صفحه به صفحه از بانک میخونم و بعد به گریدویو وصل میکنیم.
با توجه به سرچی که کردم گویا باید قسمت صفحه بندی را هم بصورت کد نویسی بنویسم. اگر راه بهتری دارید پیشنهاد کنید.

xalerebvar
پنج شنبه 13 بهمن 1390, 01:11 صبح
یه سمپل ساده هم واستون می ذارم
موفق باشید

xalerebvar
پنج شنبه 13 بهمن 1390, 01:22 صبح
ولی اگر دقت کردید من توی سوالم گفتم که میخوام با استفاده از skin و... linq این کار را بکنم. یعنی با توجه به دستوراتی که با linq مینویسم صفحه به صفحه از بانک میخونم و بعد به گریدویو وصل میکنیم.
با توجه به سرچی که کردم گویا باید قسمت صفحه بندی را هم بصورت کد نویسی بنویسم. اگر راه بهتری دارید پیشنهاد کنید.
هدف من فقط انجام حالت صفحه بندی برای GridView بود حالا فرقی نمی کنه منبع اطلاعات SqlDataSource باشه یا LInq to SQL ، شما برای واکشی اطلاعات به صورتی که شرح دادید مشکل عمده ای که باهاش روبرو می شید انجام اتصالات زیاد به پایگاه داده و واکشی تک تک رکوردها از بانک می باشد، اما در حالتی که کل رکوردهای جدول رو واکشی کنید(البته در صورت زیاد نبودن تعداد رکوردها، که می تونید اونم با استفاده از تابعی تعداد محدودی را واکشی کرده) به ازای رفتن به هر پیج جدید GridView ، اطلاعات واکشی شده قبلی فراخوانی می شوند.
موفق باشید

maktab
پنج شنبه 13 بهمن 1390, 01:35 صبح
من برای واکشی و محدود کردن اطلاعات از روشی مشابه به این تاپیک استفاده میکنم:
http://barnamenevis.org/showthread.php?318323-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%DB%8C%DA%A9-query-%D8%A8%D9%87-linqdatasource

مشکل من اینجاست مثلا 500 تا رکورد داشته باشیم. و قراره با استفاده از linq صد تا صد بخونیم. حالا اگر قراره هر 50 رکورد در یک صفحه از گریدویو قرار بگیرن. چکار باید کرد؟
چون بار اول 100 تا رو خوندیم و گریدویو 2 صفحه 50تایی داره برای این مثال؛ چطور باید گریدویو را تنظیم کنم که 10 تا صفحه 50 تایی داشته باشه و درصورتی که بر روی صفحه شماره 3 کلیک شد دوباره بره و اطلاعات را واکشی کنه و...

M.KH-SH
پنج شنبه 13 بهمن 1390, 07:42 صبح
دوست عزیز خیلی ممنون از راهنمایی ولی یک مشکل پیش اومده
صفحه بندی انجام میشه و تبدیل به 107 صفحه شده حالا نمیتونه صفحه رو به صفحه مورد نظر تغییر بده و اطلاعات موجود در اون صفحه رو نشون بده یعنی در واقع همون صفحه اول رو نشون میده