View Full Version : سوال: صفحه بندی مطالب به صورت بهینه(لطفا پاسخ بدید)
Mohammad_dn
سه شنبه 23 مهر 1392, 13:34 عصر
سلام...من پست های سایتمو توی بانک ذخیره میکنم...حالا چطور میتونم این پست هارو به صورت بهینه صفحه بندی کنم؟؟گرید ویو و یا لیست ویو همه ی رکورد ها رو میخونن و بهد صفحه بندی میکنن و این باعث میشه سرعت لود سایت به شدت افت کنه(مثلا اگه 10000 تا رکورد داشته باشیم خیلی سنگین میشه)
اگه میشه نمونه ای یا کامپوننتی چیزی بزارید...
راستی نمیخوام آژاکس باشه میخوام با استفاده از QueryString صفحه ها عوض بشه:
مثلا:default.aspx?page=2
ممنون
farhud
سه شنبه 23 مهر 1392, 18:09 عصر
شما باید هنگام خواندن دادهها آنها را در خود پایگاه داده صفحه بندی کنید. در این رابطه بسیار بحث شده و در همین سایت نیز یک تاپیک برای این موضوع هست.
جستجو کنید.
mohammad kafiyan
سه شنبه 23 مهر 1392, 18:31 عصر
در این رابطه بسیار بحث شده و در همین سایت نیز یک تاپیک برای این موضوع هست.
ما عملیات تقسیم رکوردها را به صورت بهینه در خود sql انجام می دهیم می شه لطف کنید و بگویید چگونه این رکوردها را در datalistview , repeater به صورت شمارش اعداد و قبلی و بعدی نمایش بدهم
من مشکل در نمایش دارم
fakhravari
سه شنبه 23 مهر 1392, 18:40 عصر
http://barnamenevis.org/showthread.php?322558-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-Custom-Paging-%D8%AF%D8%B1-GridView-%D8%A8%D8%A7-%D8%AA%DA%A9%D9%86%D9%88%D9%84%D9%88%DA%98%DB%8C-Ajax&p=1466722&viewfull=1#post1466722
Mohammad_dn
سه شنبه 23 مهر 1392, 20:42 عصر
این تاپیک رو قبلا دیده بودم....اما:
1:نتونستم از کداش استفاده کنم...یکم برام گنگ بود
2:نمونه پروژشم حذف شده بود
fakhravari
چهارشنبه 24 مهر 1392, 11:10 صبح
نمونه :چشمک:
Mohammad_dn
چهارشنبه 24 مهر 1392, 14:10 عصر
چطور باید بانکشو به بانک خودم تغییر بدم:نام تیبلو عوض کردم...کانکشن استرینگ هم همینطور..اما از این کد چطور باید استفاده کنم؟؟
USE [DBName]
GO
/****** Object: StoredProcedure [dbo].[CastumPaging] Script Date: 02/24/2012 02:31:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[CastumPaging]
(
@SqlTableName nvarchar(100),
@PageIndex int,
@PageSize int
)
AS
BEGIN
declare @SQLText nvarchar(500)
--set @SqlTableName = 'City'
--set @PageIndex = 0
--set @PageSize = 21
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id) as RowNum FROM '+@SqlTableName+' ) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
exec(@SQLText)
END
GO
کد بانک من:
CREATE TABLE [dbo].[UPost] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Email] NVARCHAR (50) NOT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Post] NVARCHAR (MAX) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
fakhravari
چهارشنبه 24 مهر 1392, 15:06 عصر
SELECT * FROM است.
فقط ورودی استور @SqlTableName اسم تیبلت بده
توی این سمپل وجود داره
http://barnamenevis.org/showthread.php?319398
قسمت نظر دهی مطالب
Mohammad_dn
چهارشنبه 24 مهر 1392, 17:42 عصر
آقای fakhravari (http://barnamenevis.org/member.php?128926-fakhravari) من نمیدونم اون کدی که گفتم در کجا قرار بدم....
فقط ورودی استور
این کلمه ی استور تو لینک قبلی هم بود و گفته شده بود که این دستورات رو تو قسمت استور وارد کنید...من بانکمو در قسمت SQL Server Object Explorer در محیط Visual Studio 2012 ایجاد کردم و با اون کدی که دادم :
CREATE TABLE [dbo].[UPost] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Email] NVARCHAR (50) NOT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Post] NVARCHAR (MAX) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
تیبلمو ایجاد کردم....و حالا نمیدونم اون کدو کجا قرار بدم...
fakhravari
چهارشنبه 24 مهر 1392, 17:44 عصر
توی اون محیط کمی کار شما برای ساخت PROCEDURE سخت است.
همیشه با محیط SQL Server Management Studio کار کنید.
از Create تا end باید در یک new query به صورت execute کنید
برای تست
در یک new query به صورت زیر execute کنید
EXEC CastumPaging 'B_Topics',1,5
Mohammad_dn
چهارشنبه 24 مهر 1392, 18:14 عصر
من SQL Server Management Studio رو ندارم و درحال حاضر هم نمیتونم بگیرم.....
من روی دیتابیسم توی SQL Server Object Explorer کلیک راست میکنم و new query رو انتخاب میکنم و کد زیر رو:
USE [SiteData]
GO
/****** Object: StoredProcedure [dbo].[CastumPaging] Script Date: 02/24/2012 02:31:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[CastumPaging]
(
@SqlTableName nvarchar(100),
@PageIndex int,
@PageSize int
)
AS
BEGIN
declare @SQLText nvarchar(500)
--set @SqlTableName = 'City'
--set @PageIndex = 0
--set @PageSize = 21
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id DESC) as RowNum FROM '+@SqlTableName+' ) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
exec(@SQLText)
END
GO
داخلش کرده و در نهایت گذینه ی execute رو میزنم...اما خطای زیر رو میده...
Msg 2714, Level 16, State 3, Procedure CastumPaging, Line 11
There is already an object named 'CastumPaging' in the database.
alonemm
چهارشنبه 24 مهر 1392, 18:15 عصر
باسلام:
توی اون پست به طور خیلی ساده توضیح داده شده و من خودم توی خیلی پروژه ها ازش استفاده کردم.
لطفا مراحل را از اول به صورت درست جلو برید اگه مشکلی بود در همون پست مطرح کنید.
موفق باشید.
Mohammad_dn
چهارشنبه 24 مهر 1392, 18:32 عصر
آقای فخرآوری خیلی خیلی ممنون حل شد
Mohammad_dn
چهارشنبه 24 مهر 1392, 19:05 عصر
آقا اما یه سوال دیگه.....:لبخندساده:
من چطور میتونم از دستور WHERE و LIKE در این استفاده کنم؟؟؟؟؟؟؟؟؟
fakhravari
چهارشنبه 24 مهر 1392, 19:11 عصر
SELECT Subject FROM B_Topics WHERE (Subject LIKE N'%برنامه%')
Mohammad_dn
چهارشنبه 24 مهر 1392, 19:57 عصر
این کدو باید کجا استفاده کنم؟؟؟؟؟؟؟؟
fakhravari
چهارشنبه 24 مهر 1392, 20:35 عصر
بعد - 1) باید یک +' or' , ادامه داستان
Mohammad_dn
چهارشنبه 24 مهر 1392, 21:30 عصر
:متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر::متفکر::متفکر::م فکر::متفکر::متفکر::متفکر::مت کر::متفکر::متفکر::متفکر::متف ر::متفکر:
بعد - 1) باید یک +' or' , ادامه داستان
یعنی چی؟؟؟؟؟یعنی کجا؟؟؟
fakhravari
چهارشنبه 24 مهر 1392, 22:12 عصر
واقعا نمیدونید؟؟؟؟؟؟؟؟؟
نمیدونید رشته بالا چطوری ادامه بدین؟
شما بخواهید وسط یک رشته مقداری از textbox بخونید چی میکنید و دوباره متی ادامش بنویسید .
اگر دقط کنید که کم میکنید میبینید
در دستورات بالا یک رشته است که وسط اون از 'select * from '+@table name+ 'where id=6'+
مقدار جای گزینی میشه.
دقت کنید
Mohammad_dn
چهارشنبه 24 مهر 1392, 22:34 عصر
آقای فخرآوری میدونم چه طور باید متنو اظافه کنم...منظورم این بود که این کد جایگذین کدوم دستور در کجای این پروژه باید بشه؟؟؟
فکر نکنم منظورتون این باشه که جایگذین دستور زیر در کد قبلی باشه که؟؟؟
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id DESC) as RowNum FROM '+@SqlTableName+' ) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
fakhravari
چهارشنبه 24 مهر 1392, 22:47 عصر
SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY TopicID) as RowNum FROM B_Topics ) as DerivedTableName WHERE RowNum BETWEEN 1 AND 5 - 1
or Subject LIKE N'%C#%'
بروز شد
ALTER PROCEDURE [dbo].[CastumPaging2]
(
@SqlTableName nvarchar(100),
@PageIndex int,
@PageSize INT,
@Serchkey nvarchar(100)
)
AS
BEGIN
declare @SQLText nvarchar(500)
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY TopicID) as RowNum FROM '+@SqlTableName+' ) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
+ ' or Subject LIKE N''%'+@Serchkey+'%'''
exec(@SQLText)
END
EXEC [dbo].[CastumPaging2] 'B_Topics',1,5,'C#'
Mohammad_dn
چهارشنبه 24 مهر 1392, 23:30 عصر
آقا واقعا ممنون...فکر کنم امشب به اندازه ی یک ماه حرستون دادم....شرمنده...بالاخره ما تازه کاریم دیگه...شما به بزرگیه خودتون ببخشید....راستش من یه سوال دیگه در مورد این سمپل دارم اما روم نمیشه بپرسم...:خجالت::خجالت::خجالت:: خجالت::خجالت::خجالت:
fakhravari
پنج شنبه 25 مهر 1392, 08:55 صبح
بگو
سمپل بهتری هم هست. شما راه یاد بگیرین.
Mohammad_dn
پنج شنبه 25 مهر 1392, 12:21 عصر
این سمپل بهینست...و تغریبا اون چیزی بود که میخواستم ...فقط یه مشکل داره و اون اینه که ظاهرش مثل ابزار DataPager در ASP.NET نیست یعنی صفحات به این صورت نیست:
آخر بعدی ... 4 3 2 1 قبلی اول
mohsen_f_b
شنبه 27 مهر 1392, 15:09 عصر
این سمپل بهینست...و تغریبا اون چیزی بود که میخواستم ...فقط یه مشکل داره و اون اینه که ظاهرش مثل ابزار DataPager در ASP.NET نیست یعنی صفحات به این صورت نیست:
آخر بعدی ... 4 3 2 1 قبلی اول
http://barnamenevis.org/showthread.php?416737-%DA%A9%D8%AA%D8%A7%D8%A8-%D8%AE%D8%A7%D9%86%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-DataGrid-Repeater-...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.