111,126
社区成员
发帖
与我相关
我的任务
分享
--@PageSize:分页大小,PageIndex:页号,@PageCount:总页数,@recordCount:记录数
CREATE PROCEDURE GetDataPage_Misc @pageSize int, @pageIndex int, @pageCount int output, @recordCount int output AS
declare @SQL varchar(1000)
select @recordCount=count(*) from Misc
set @pageCount=ceiling(@recordCount*1.0/@pageSize)
if @pageIndex = 0 or @pageCount<=1
set @SQL='select top '+str(@pageSize)+' * from Misc order by MID desc'
else if @pageIndex = @pageCount -1
set @SQL='select * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+' * from Misc order by MID asc) TempTable order by MID desc'
else set @SQL='select top '+str(@pageSize) +' * from ( select top '+str(@recordCount - @pageSize * @pageIndex)+' * from Misc order by MID asc) TempTable order by MID desc'
exec(@SQL)
GO
private DataSet GetPageData(uint pageSize, uint pageIndex)
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["Conn"]);
conn.Open();
SqlCommand command = new SqlCommand("GetDataPage_Misc", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@pageSize", SqlDbType.Int);
command.Parameters["@pageSize"].Value = pageSize;
command.Parameters.Add("@pageIndex", SqlDbType.Int);
command.Parameters["@pageIndex"].Value = pageIndex;
command.Parameters.Add("@pageCount", SqlDbType.Int);
command.Parameters["@pageCount"].Value = pageCount;
command.Parameters["@pageCount"].Direction = ParameterDirection.Output;
command.Parameters.Add("@recordCount", SqlDbType.Int);
command.Parameters["@recordCount"].Value = recordCount;
command.Parameters["@recordCount"].Direction = ParameterDirection.Output;
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
pageCount = Convert.ToUInt32(command.Parameters["@pageCount"].Value);
recordCount = Convert.ToUInt32(command.Parameters["@recordCount"].Value);
conn.Close();
return ds;
}
protected void BindDataGrid()
{
DataSet ds = GetPageData((uint)DataGrid1.PageSize, (uint)DataGrid1.CurrentPageIndex);
DataGrid1.VirtualItemCount = (int)recordCount;
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}
int sid = Convert.ToInt32(Request.QueryString["sid"]);
CREATE PROCEDURE GetDataPage_Misc @pageSize int, @pageIndex int, @sid int, @pageCount int output, @recordCount int output AS
......
--在所有的查询语句中加where sid = str(@sid)
......
command.Parameters.Add("@sid", SqlDbType.Int);
command.Parameters["@sid"].Value = sid;
......