1. 谁知道ASP.NET中最好的分页方法
这个要看你从什么角度去考虑了.如果你想要最简的那DataGrid本身的分页就可以使.如果你考虑性能与页面样式,那可以使用第三方专门的分页控件,此类控件很多,如aspnetpaper.其原理应该都是差不多的.
2. 数据库中有几万条数据,怎样使用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
3. 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、在后台用生成静态页的方式,把前台的分页功能全都生成静态文件,这样虽然占用空间大一些,但速度很快
4. 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();
}
5. asp.net模糊查询分页
//控件改变时
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
//调用这个方法
//e.NewPageIndex是获取到当前页
//PageSize是显示的条数,在前台已经设置好
DisplayData(e.NewPageIndex, AspNetPager1.PageSize);
}
//查询按钮
protected void Button1_Click(object sender, EventArgs e)
{
string a= TextBox1.Text;
NewsInfo dal=new NewsInfo();
List<NewsInfos> li = new List<NewsInfos>();
li = dal.GetLike(a);
Repeater1.DataSource = dal.GetLike(a);
DataBind();
}
原因是你这个 2个事件中都 执行了 你只需要在 AspNetPager1_PageChanging中更改就可以啦