1. 再問GridView自定義排序和分頁的問題!
我這里提供一個自定義排序的sql,寫一個方法帶2個參數,每一頁的記錄數pageSize,頁的索引pageIndex,當然也可以加查詢條件,排序條件,根據實際情況添加參數個數
//翻頁查詢Sql語句
select top pageSize * from dbo.spt_values
where 欄位1 not in(
select top pageSize*pageIndex 欄位1 from 表dbo.spt_values)
pageSize:每一頁的記錄數
pageIndex:頁索引
desc 表示降序排序 例如:order by 欄位名稱 desc
2. 兩個datatable合成一個datatable並綁定到gridview分頁顯示
那你得保證欄位一樣····
把B表的數據 循環到A表中 就可以了
3. gridview調用存儲過程分頁,資料庫用的是oracle,oracle不太懂,最好有存儲過程和調用的具體代碼
兩張表是指什麼,union all ?合並一起的數據,還是Left join inner join的數據
union all需要列名一致
分頁的話用這種,SqlServer版的。
Create PROCEDURE [dbo].[PagedInquiry]
@PageSize nvarchar(30),
@PageIndex nvarchar(30)
AS
select * from 表(
select *,ROW_NUMBER() OVER(ORDER BY 排序欄位 desc) as IDRANK from 表
)AS IDWITHROWNUMBER
where
IDRANK >= (@PageSize*@PageIndex) AND IDRANK < (@PageSize*(@PageIndex+1))
4. gridview存儲過程分頁
給你個例子,你可以參考下面的,改成你自己的表名和欄位就可以了,因為我不知道你的表結構
CREATE PROCEDURE spGetAllEmployee (
@startIndex INT,
@pageSize INT,
@sortBy NVARCHAR(30),
@totalEmployees INT OUTPUT)
AS
SET NOCOUNT ON
DECLARE @sqlStatement NVARCHAR(MAX),
@upperBound INT
IF @startIndex < 1
SET @startIndex = 1
IF @pageSize < 1
SET @pageSize = 1
SET @upperBound = @startIndex + @pageSize
SELECT @totalEmployees = COUNT(*) FROM Employee
SET @sqlStatement =
' SELECT E.EmployeeID, E.EmployeeCode, E.Name, E.Department, E.Salary FROM ( SELECT ROW_NUMBER() OVER(ORDER BY ' + @sortBy + ') AS rowNumber, * FROM Employee ) AS E WHERE rowNumber >= ' +
CONVERT
(VARCHAR(9), @startIndex) + ' AND rowNumber < ' + CONVERT(VARCHAR(9), @upperBound)
EXEC (@sqlStatement)
5. C#.Net + SqlServer2005 用存儲過程方式,使用下面的分頁語句,對一個DataGridView進行分頁
我用雅虎郵箱給你發過去了,你看一下,那是個我沒事聯系的小功能,分頁我是用存儲過程寫的(語句和你那個差不多,我只是多加了幾個wehere),你需要在資料庫了看那個存儲過程就可以了
6. gridview如何實現分頁功能.
方法一
SELECT DISTINCT TOP 8 CategoryID
FROM tbl_Proct_Procts
WHERE (UserID = 73) AND (CategoryID >
(SELECT MAX(categoryid)
FROM (SELECT DISTINCT TOP 16 categoryid
FROM tbl_proct_procts where userid=73
ORDER BY categoryid) AS b))
ORDER BY CategoryID
--方法二
select top 10 * from [order details]
where orderid>all(select top 10 orderid from [order details] order by orderid)
order by orderid
下面的來自CSDN-------------------------------------
SQL Server 存儲過程的分頁,這個問題已經討論過幾年了,很多朋友在問我,所以在此發表一下我的觀點
建立表:
CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入數據:(2萬條,用更多的數據測試會明顯一些)
SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=20000
begin
insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
-------------------------------------
分頁方案一:(利用Not In和SELECT TOP分頁)
語句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID
SELECT TOP 頁大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id))
ORDER BY ID
-------------------------------------
分頁方案二:(利用ID大於多少和SELECT TOP分頁)
語句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
SELECT TOP 頁大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
-------------------------------------
分頁方案三:(利用SQL的游標存儲過程分頁)
create procere XiaoZhengGe
@sqlstr nvarchar(4000), --查詢字元串
@currentpage int, --第N頁
@pagesize int --每頁行數
as
set nocount on
declare @P1 int, --P1是游標的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。
建議優化的時候,加上主鍵和索引,查詢效率會提高。
通過SQL 查詢分析器,顯示比較:我的結論是:
分頁方案二:(利用ID大於多少和SELECT TOP分頁)效率最高,需要拼接SQL語句
分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句
分頁方案三:(利用SQL的游標存儲過程分頁) 效率最差,但是最為通用
在實際情況中,要具體分析。
7. 在winform下,怎麼實現datagridview數據控制項的分頁或者誰有第三方datagridview 分頁控制項可以轉告我
用datagridview分頁性能損耗還是比較大,這個你可以用SQL語句分頁或者是存儲過程分頁。
上面加兩個按鈕,上一頁,下一頁。
不過要是不要求太高的展示,用其他控制項比較好。
8. datagridview自帶分頁支持多少數據分頁
分頁一般顯示可以顯示10頁左右
如果你上百條數據最好是用一個自己封裝好的分頁控制項(網上有很多的,可以去搜搜)
少的話就可以用自帶的
9. winform中的DataGridView如何實現分頁(C#)
常用分頁一般有兩種
一是在資料庫寫存儲過程,或利用sql語句,每次只取出N條數據。
二是將數據一次性全取出來,然後利用程序來進行分頁。
第一種在數據量比較大的時候性能好點。
希望你能明白。