aspnet分頁存儲過程
可以加個游標 使用更方便
@PageCount bigint output,--總頁數
@Pages bigint output --當前頁
as
if @Pages<=0 --判斷頁數
set @Pages=1
declare @指針定位 bigint
set @指針定位=9*(@Pages-1)--這個是每頁10條
declare @hid bigint,--獲取定位Id 主要是用自增值判斷的
@余數 bigint--存余數 這個余數是 記錄數/10 餘下的數
select @PageCount=count(*) from [表] where [Id] = @Id
set @余數=@PageCount%10 --這里的@PageCount 是記錄總數
if @余數>0
set @PageCount=@PageCount/10+1 --這里的@PageCount是總頁數
else
set @PageCount=@PageCount/5 --這里的@PageCount是總頁數
if @Pages>@PageCount --@Pages是當前頁
set @Pages=@PageCount
declare mycur scroll cursor for
select [Id] from [表] where [Id] = @Id
open mycur
fetch absolute @指針定位 from mycur into @hid --@hid獲取定位Id
if @hid is null
set @hid=0
SELECT TOP 10 * --這里的10 是指 頁數大小
FROM 表
WHERE (Id NOT IN --------在where後面 可以加條件 如where [列1]=2 and (Id NOT IN-----
(SELECT TOP (@hid) Id
FROM 表
ORDER BY Id))
ORDER BY Id
--上面的是我根據下面的 自己改的 我也不確定速度快否 也請高手看看 不過挺好用--
SELECT TOP 頁大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP (頁大小*(頁數-1)) id
FROM 表
ORDER BY id))
ORDER BY ID
這是我自己整理的 你仔細看看 很好用的
㈡ ASPNET怎樣調用一個存儲過程(帶參數的)
ASPNET怎樣調用一個存儲過程(帶參數的)使用的是Ado.NET中的相關的資料庫操作方法。
Ado.NET連接資料庫有以下幾個步驟:
1:使用配置的資料庫連接串,創建資料庫連接 Connection 對象
2:構建操作的sql語句
3:定義command對象
4:打開數據連接
5:執行命令
舉一個例子,刪除操作
public int DeleteStudent3(int stuID)
{
int result = 0;
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand objCommand = new SqlCommand(dboOwner + ".usp_DeleteStudent", connection);
objCommand.CommandType = CommandType.StoredProcere;
objCommand.Parameters.Add("@stuID", SqlDbType.Int).Value = stuID;
connection.Open();
result = objCommand.ExecuteNonQuery();
}
return result;
}
㈢ aspnetpage控制項怎麼把gridview分頁 求詳細代碼 最好用存儲過程
沒用存貯過程的
private void Binder()
{
DataSet ds = DataHelpe.GetDataSet(strsql);
DataView dv = ds.Tables[0].DefaultView;
PagedDataSource pds = new PagedDataSource();
pagelist.RecordCount = dv.Count;
pagelist.AlwaysShow = true;
pagelist.PageSize = 20;
pds.DataSource = dv;
pds.AllowPaging = true;
pds.CurrentPageIndex = pagelist.CurrentPageIndex - 1;
pds.PageSize = pagelist.PageSize;
this.ddlUser.DataSource = pds;
this.ddlUser.DataBind();
this.pagelist.CustomInfoHTML = "記錄總數:" + pagelist.RecordCount.ToString() + "";
}
pagelist是分頁控制項的ID
//PageChanging這個事件是分頁控制項自帶的一個事件
protected void PageChanging(object src, PageChangingEventArgs e)
{
pagelist.CurrentPageIndex = e.NewPageIndex;
this.Binder();
}
㈣ 求 sql 2000 通用分頁存儲過程 能用就給高分【內有要求】
/****** 對象: 存儲過程 dbo.AspNetPage ******/
/*
=====================================
* @Describe 通用查詢數據ASPNETPAGE分頁過程
/*
@Tables 表名 必選
@PrimaryKey 主關鍵字 必選
@pagesize 頁碼大小 可選 默認值:1
@pageindex 當前頁 可選 默認值:1
@docount 是否只統計總記錄數 可選 默認值:否
@Fields 選擇欄位 可選 默認:所有欄位
@Sort 排序語句,不帶Order By 可選
@Filter 過濾語句,不帶Where 可選
*/
=====================================
*/
CREATE procere AspNetPage
(
/*
@Tables 表名 必選
@PrimaryKey 主關鍵字 必選
@pagesize 頁碼大小 可選 默認值:1
@pageindex 當前頁 可選 默認值:1
@docount 是否只統計總記錄數 可選 默認值:否
@Fields 選擇欄位 可選 默認:所有欄位
@Sort 排序語句,不帶Order By 可選
@Filter 過濾語句,不帶Where 可選
*/
@Tables nvarchar(400),
@PrimaryKey nvarchar(100),
@pagesize int=1,
@pageindex int=1,
@docount bit=0,
@Fields varchar(1000) = '*',
@Sort varchar(1000) = NULL,
@Filter varchar(1000) = NULL)
as
set nocount on
DECLARE @strFilter varchar(1000)
DECLARE @strSort varchar(1000)
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
END
ELSE
BEGIN
SET @strFilter = ''
END
IF @Sort IS Not NULL And @Sort!=''
Begin
Set @strSort='order by '+@Sort+''
End
if(@docount=1)
exec('select count('+@PrimaryKey+') from '+@Tables+' '+@strFilter+'')
else
begin
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
create table #pageindex(id int identity(1,1) not null,nid int)
set rowcount @PageUpperBound
exec(
'
insert into #pageindex(nid)
select '+@PrimaryKey+' from '+@Tables+' '+@strFilter+' '+@strSort+'
select O.'+@Fields+'
from '+@Tables+' O,#pageindex p
where O.'+@PrimaryKey+'=p.nid and p.id>'+@PageLowerBound+' and p.id<='+@PageUpperBound+' order by p.id
'
)
select * from #pageindex
end
set nocount off
GO
希望對你有幫助。
㈤ asp.net 分頁控制項怎麼用呢
用gridview自帶的分頁是比較好用的。
建議你在網路上 搜索 gridview 72,裡面有很多gridview的好東西
學習學習
㈥ asp.net如何實現多表查詢然後對其進行分頁
你要懂得多表聯查,那我就教你分頁拉:
第一 要用到分頁控制項aspnetPage 示例如下
第二 在數據訪問層添加以下兩個方法
//查詢總記錄數
public static int GetGoodsCount()
{
string sql = "select count(*) from goods ";
return Convert.ToInt32(DBHelp.ExceateScalar(sql,null));
}
//查詢信息
public static List<Goods> GetAllGoods(int startRecordIndex,int pageSize)
{
//row_number()over(order by goodsid)為行號(新的函數)
string sql = "select * from (
select *,row_number()over(order by goodsid) as num from goods) as a
where num between @startIndex and @startIndex+@pageSize-1 ";
SqlParameter[] paras=new SqlParameter[]
{
new SqlParameter("@startIndex",startRecordIndex),
new SqlParameter("@pageSize",pageSize)
};
return ExeceateSelecta(sql,paras);
}
第三步在頁面後台調用,
注意首先要為aspnetPage的屬性pageSize給值,也就是說每頁要顯示信息數量
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
AspNetPager1.RecordCount = GoodsManager.GetGoodsCount();
}
}
//分頁控制項的事件
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
//信息開始的索引StartRecordIndex 信息數量PageSize
List<Goods> list = GoodsManager.GetAllGoods(this.AspNetPager1.StartRecordIndex, AspNetPager1.PageSize);
this.DataList1.DataSource = list;
this.DataList1.DataBind();
}
㈦ VS分頁顯示怎麼弄
兩種方法:
1:PageDateSource 不推薦 效率低 速度慢。
2:自己寫分頁的存儲過程,然後在用ASPNETPAGE分頁控制項處理一下。
㈧ repeater用 aspnetpage控制項實現分頁,使用存儲過程,有什麼好的方法,謝謝
用通用 page分頁存儲過程分頁就可以了。
㈨ 資料庫中有幾萬條數據,怎樣使用aspnetpage分頁控制項結合資料庫分頁讀取呢
可以用存儲過程分頁
/*
函數名稱: GetRecordFromPage
函數功能: 獲取指定頁的數據
參數說明: @tblName 包含數據的表名
@fldName 關鍵欄位名
@PageSize 每頁記錄數
@PageIndex 要獲取的頁碼
@OrderType 排序類型, 0 - 升序, 1 - 降序
@strWhere 查詢條件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 欄位名
@PageSize int = 10, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@OrderType bit = 0, -- 設置排序類型, 非 0 值則降序
@strWhere varchar(2000) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主語句
declare @strTmp varchar(1000) -- 臨時變數
declare @strOrder varchar(500) -- 排序類型
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)
GO
㈩ asp.net網站開發一般都用什麼控制項顯示資料庫信息用什麼控制項分頁請詳細說下怎麼分頁最好!謝謝
前台使用DataList、ListView、Repeater 後台一般使用GridView GridView和ListView(VS2008以後才有)都自帶分頁功能 DataList和Repeater需要手動分頁: 分頁方式有很多種 1、SQL語句分頁:就是前台調用時動態傳頁碼 後台拼SQL語句(select top 頁大小 * from 表名 where 主鍵 not in(select top (頁碼-1)*頁大小 主鍵 from 表名)) 2、存儲過程,原理和上面的差不多 3、使用GridView中封裝的PageDataSource(實例化類,取數據源,設置允許分頁、設置分頁大小、最後把數據源指向展示控制項,其實可以和第三方控制項的aspnet分頁控制項配合使用),適用於數據記錄不是太大的時候,因為會把全所記錄都加內存中,數據太大會佔用內存 4、VS2008以後有LINQ,這LINQ的SKIP一樣可以實例。優點:延遲查詢,不用把所有數據全查出來,應用於數據非常多的時候,如果用的是VS2008之前的IDE那麼就用第一、二種方法吧 5、在後台用生成靜態頁的方式,把前台的分頁功能全都生成靜態文件,這樣雖然佔用空間大一些,但速度很快