首页 > 编程 > .NET > 正文

ASP.NET技巧:DataGrid传统分页方式_.Net教程

2024-07-10 12:50:08
字体:
来源:转载
供稿:网友

推荐:.NET环境下几种不同的邮件发送解决方案
1、使用outLook提供的发送如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook的ActiveX 组件优点:开发简单缺点:依赖outlook组件,SMTP 邮件服务邮件发

此分页方式与传统ASP分页方式相仿。

DataGridPage.aspx

以下为引用的内容:
<%@ Page language="c#" Codebehind="DataGridPage.aspx.cs" AutoEventWireup="false" Inherits="netCRM.DataGridPage" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>DataGridPage</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1" runat="server" AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd"
Font-Size="8pt" Font-Name="Verdana" CellPadding="3" BorderWidth="1px" BorderColor="Black"
PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages"
PageSize="5" Font-Names="Verdana" Width="100%">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
<PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</form>
<TABLE cellSpacing="0" cellPadding="1" width="100%" bgColor="#aaaadd" border="0">
<TBODY>
<TR>
<TD>
<TABLE cellSpacing="0" cellPadding="4" width="100%" bgColor="#fef8e2" border="0">
<TBODY>
<TR>
<TD class="M" noWrap align="center"><asp:Literal id="Literal1" runat="server"></asp:Literal></TD>
</TR>
<TR>
<TD class="C" noWrap align="center"><asp:Literal id="Literal2" runat="server"></asp:Literal></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</body>
</HTML>

DataGridPage.aspx.cs

以下为引用的内容:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace netCRM
{
/// <summary>
/// DataGridPage 的摘要说明。
/// </summary>
public class DataGridPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Literal Literal1;
protected System.Web.UI.WebControls.Literal Literal2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string connstring = "Server=.;Database=NorthWind;User Id=sa;Password=;";
string sql="Select * from Orders";
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql,conn);
sqlAdapter.Fill(ds,"users");
DataView dataview = new DataView();
dataview = ds.Tables[0].DefaultView;
DataGrid1.DataSource = ds.Tables[0].DefaultView;
DataGrid1.DataBind();
string cPage;
int pageSize = 10;
int currentPage;
int pageCount;
int numResults = 0;
if (Request.QueryString["page"]==null)
{
cPage="1";
}
else
{
cPage=Request.QueryString["page"].ToString();
}
try
{
currentPage = Int32.Parse(cPage);
}
catch
{
currentPage = 1;
}
numResults = 0;
int start = (int)((currentPage - 1) * pageSize);
int to = (int)(currentPage * pageSize);
if (start <= 0) start = 0;
numResults = dataview.Count;
int a1=0;
pageCount = Math.DivRem(numResults,pageSize,out a1);
if (a1>0)
{
pageCount ;
}
if(currentPage>pageCount || currentPage<=0)
{
currentPage = 1;
}
if(currentPage==pageCount)
{
to = dataview.Count;
}
// Create one DataTable with one column.
DataTable myTable = new DataTable("myTable");
myTable = dataview.Table.Clone();
//DataColumn colItem1 = new DataColumn("name",Type.GetType("System.String"));
//DataColumn colItem2 = new DataColumn("types",Type.GetType("System.String"));
//DataColumn colItem3 = new DataColumn("vendor",Type.GetType("System.String"));
//myTable.Columns.Add(colItem1);
//myTable.Columns.Add(colItem2);
//myTable.Columns.Add(colItem3);
//add row
DataRow NewRow;
for(int i=start;i<numResults;i )
{
if(i<to)
{
NewRow = myTable.NewRow();
for(int k=0;k<dataview.Table.Columns.Count;k )
{
NewRow[k] = dataview.Table.Rows[i][k];
}
myTable.Rows.Add(NewRow);
}
}
myTable.AcceptChanges();
DataView resultDataview = new DataView(myTable);
DataGrid1.DataSource = resultDataview;
DataGrid1.DataBind();
/// <summary>
/// 生成页导航条。
/// </summary>
string strNav = "";
int endpage;
if (currentPage>1)
{
strNav = "<a href='?page=" (currentPage-1).ToString() "'>上一页</a> ";
}
if (currentPage>11)
{
strNav = "<a href='?page=1'>1</a> ...";
}
if(pageCount>currentPage 10)
{
endpage = currentPage 10;
}
else
{
endpage = pageCount;
}
for (int i=currentPage-10;i<endpage 1;i )
{
if(i>=1)
{
if (i==currentPage)
{
strNav ="<font color=#990000><strong>" i.ToString() "</strong></font> ";
}
else
{
strNav = "<a href='?page=" i.ToString() "'>" i.ToString() "</a> ";
}
}
}
if((currentPage 10)<pageCount)
{
strNav = "... <a href='?page=" pageCount.ToString() "'>" pageCount.ToString() "</a>";
}
if(currentPage<pageCount)
{
strNav = " <a href='?page=" (currentPage 1).ToString() "'>下一页</a> ";
}
Literal1.Text = strNav;
Literal2.Text = "共 " numResults.ToString() " 条供应信息,当前显示第 "
(start 1).ToString() " - " to.ToString() " 条,共 " pageCount.ToString() " 页";
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load = new System.EventHandler(this.Page_Load);
}
#endregion
}
}

分享:VB.NET实现窗体图标最小化到状态栏
本文所使用的编程环境是Microsoft Visual Studio 2005,首先打开 Visual Studio。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表