用Datalist能否.进行分页?
解决方案 »
- VS 2008 +sql2005
- 求高人帮忙, 如何操作frame 网页中的控件?
- 我在一幅地图上显示几个站点图标,站点图标的信息是存放在SqlServer2005里面的,然后我鼠标单击图片时通过判断鼠标位置,来判断单击了哪个站点,怎么实现?
- asp.net 实现可输入的下拉列表
- 合并显示
- asp.net页面乱码 怎么回事???
- [两个问题100分]WEB服务器控件RadioButtonList,绑定了很多记录,怎么在客户端得到?
- !!!菜鸟问题!! 怎么在DataGrid里捆绑2个表??急急急
- 高分求优秀论坛下载地址?.net或asp均可?
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
- 变于datagrid的一个问题
- ApplicationBlocks.Data里的SqlDataReader怎么返回SqlParameter 值
如何需要,详细方法我可以写出
private void Page_Load(object sender, System.EventArgs e)
{
//页面初试化时进行数据绑定
if(!IsPostBack)
DataListDataBind();
}
private void DataListDataBind()
{
//定义数据连接对象,其中数据库连接字符串是在Web.Config文件中定义的
SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionSqlServer"].ToString());
//创建数据适配器对象
SqlDataAdapter da = new SqlDataAdapter("select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy from Employees",conn);
//创建DataSet对象
DataSet ds = new DataSet();
try
{
//填充数据集
da.Fill(ds,"testTable");
//创建分页类
PagedDataSource objPage = new PagedDataSource();
//设置数据源
objPage.DataSource = ds.Tables["testTable"].DefaultView;
//允许分页
objPage.AllowPaging = true;
//设置每页显示的项数
objPage.PageSize = 5;
//定义变量用来保存当前页索引
int CurPage;
//判断是否具有页面跳转的请求
if (Request.QueryString["Page"] != null)
CurPage=Convert.ToInt32(Request.QueryString["Page"]);
else
CurPage=1;
//设置当前页的索引
objPage.CurrentPageIndex = CurPage-1;
//显示状态信息
lblCurPage.Text = "当前页:第" + CurPage.ToString()+"页";
//如果当前页面不是首页
if (!objPage.IsFirstPage)
//定义"上一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);
//如果当前页面不是最后一页
if (!objPage.IsLastPage)
//定义"下一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1); //进行数据绑定
dlPager.DataSource = objPage;
dlPager.DataBind();
}
catch(Exception error)
{
//输出异常信息
Response.Write(error.ToString());
}
}aspx<asp:DataList id="dlPager" runat="server" Height="136px" DataKeyField="EmployeeID" Width="440px">
<HeaderTemplate>
人员信息
</HeaderTemplate>
<FooterTemplate>
<hr color="red">
</FooterTemplate>
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"LastName")%>
<%#DataBinder.Eval(Container.DataItem,"FirstName")%>
<%#DataBinder.Eval(Container.DataItem,"Title")%>
<%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")%>
</ItemTemplate>
</asp:DataList></TD>
</TR>
<TR>
<TD>
<asp:label id="lblCurPage" runat="server"></asp:label>
<asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>
<asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink></TD>
具体看MSDN吧。
具体看MSDN吧。
略看下SKY266的 可以
还可以找个示例学一下
/// <summary>
/// 高效获得一页数据[无条件]
/// </summary>
/// <param name="PageSize">每页显示记录数</param>
/// <param name="PageNo">当前页码</param>
/// <param name="TableName">表名</param>
/// <param name="OutPutItem">数据项</param>
/// <param name="MainKey">主键</param>
/// <param name="PrefaceID">排序键</param>
/// <returns></returns>
///
public string OnePageData(int PageNo,int PageSize,string TableName,string OutPutItem,string MainKey,string Preface)
{
string strSql = null; if(PageNo==1)
{
strSql = "SELECT Top "+PageSize+" "+OutPutItem+" from "+TableName+" Order By "+MainKey+" "+Preface;
}
else
{
if(Preface.ToLower()=="desc")
{
strSql = "SELECT Top "+PageSize+" "+OutPutItem+" FROM "+TableName+" WHERE";
strSql = strSql + " ("+MainKey+"<(SELECT MIN("+MainKey+") FROM (SELECT TOP "+PageSize*(PageNo-1)+" "+MainKey+" FROM "+TableName+" ORDER BY "+MainKey+" "+Preface+") AS T))";
strSql = strSql + " ORDER BY "+MainKey+" "+Preface;
}
else
{
strSql = "SELECT Top "+PageSize+" "+OutPutItem+" FROM "+TableName+" WHERE";
strSql = strSql + " ("+MainKey+">(SELECT MAX("+MainKey+") FROM (SELECT TOP "+PageSize*(PageNo-1)+" "+MainKey+" FROM "+TableName+" ORDER BY "+MainKey+" "+Preface+") AS T))";
strSql = strSql + " ORDER BY "+MainKey+" "+Preface;
}
}
return strSql;
}
DataGrid太硬,这话里有话意思