'得到数据视图,参数为要排序的列 Private Function GetDv(ByVal strSort As String) As DataView '定义数据库连接 Dim dv As DataView Dim CN As New SqlConnection() Try '初始化连接字符串 CN.ConnectionString = "data source=pmserver; initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;" CN.Open() '从NorthWind得到orders表的数据 Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN) Dim ds As New DataSet() adp.Fill(ds) '得到数据视图 dv = ds.Tables(0).DefaultView Catch ex As Exception #If DEBUG Then Session("Error") = ex.ToString() Response.Redirect("../error.aspx") '跳转程序的公共错误处理页面 #End If Finally '关闭连接 CN.Close() End Try '排序 dv.Sort = strSort Return dv End Function Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not IsPostBack Then ViewState("strSort") = "orderid" dgOrder.DataSource = GetDv(ViewState("strSort").ToString()) dgOrder.DataBind() End If End Sub '排序 Private Sub dgOrder_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand dgOrder.CurrentPageIndex = 0 '得到排序的列 ViewState("strSort") = e.SortExpression.ToString() dgOrder.DataSource = GetDv(ViewState("strSort").ToString()) dgOrder.DataBind() End Sub '分页 Private Sub dgOrder_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged '得到分页的页号 dgOrder.CurrentPageIndex = e.NewPageIndex dgOrder.DataSource = GetDv(ViewState("strSort").ToString()) dgOrder.DataBind() End Sub
private void Page_Load(object sender, System.EventArgs e)
{
pagesize = 10;
//显示总页数
pagecount = getpgcount();
lbPageCount.Text ="共 "+pagecount.ToString ()+" 页";
if (!Page.IsPostBack )
{
ViewState["pageindex"]=0;
BindData();
}
else
{
currentpage=(int)ViewState["pageindex"];
}
} #region 数据绑定
private void BindData()
{
string strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath ("..//penhui.mdb");
OleDbConnection con=new OleDbConnection (strcon);
con.Open (); string str_sel="SELECT user_tab.username,guestbook_tab.guestid,
guestbook_tab.zhuti,guestbook_tab.content,guestbook_tab.systime,
guestbook_tab.recontent FROM guestbook_tab ,user_tab where
guestbook_tab.userid = user_tab.userid order by guestbook_tab.systime desc"; OleDbDataAdapter da=new OleDbDataAdapter (str_sel,con); DataSet ds=new DataSet ();
da.Fill(ds,(currentpage*pagesize),pagesize,"Guest");
mylist.DataSource =ds.Tables ["Guest"].DefaultView ;
mylist.DataBind (); da.Dispose ();
con.Close ();}
#endregion
//计算总记录数
protected int rscount()
{
string strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("..//penhui.mdb");
OleDbConnection conn = new OleDbConnection(strcon);
conn.Open(); string selstr = "select count(*) as icount from guestbook_tab ";
OleDbCommand com = new OleDbCommand(selstr,conn);
OleDbDataReader dr = com.ExecuteReader();
if(dr.Read())
{
int icount = Int32.Parse(dr["icount"].ToString());
lbRecordcount.Text ="共 "+icount.ToString ()+" 条记录";
dr.Close();
conn.Close();
return icount;
}
else
{
return 0;
}
}
//总页数
protected int getpgcount()
{
int jlcount = rscount();
int pgcount;
if(jlcount%pagesize==0)
{
pgcount = (jlcount/pagesize);
}
else
{
pgcount = (jlcount/pagesize) + 1;
}
return pgcount;
}
//上页
private void link_pre_Click(object sender, System.EventArgs e)
{
currentpage=(int)ViewState["pageindex"];
if(currentpage>0)currentpage--;
ViewState["pageindex"]=currentpage;
BindData();
}//下页
private void link_next_Click(object sender, System.EventArgs e)
{
currentpage=(int)ViewState["pageindex"];
if(currentpage<(pagecount-1))currentpage++;
ViewState["pageindex"]=currentpage;
BindData();;
}
if(总记录数%20==0)
{
页数==总记录数%20
}
else 页数=总记录数%20+1分页可以直接用DadaAdapter.Fill()
其中有一个重载版本,可以确定取出的记录数目从哪开始,取出多少条
<asp:datagrid id="dgOrder" runat="server" Height="515px" Width="718px" AutoGenerateColumns="False" AllowSorting="True" CellPadding="4" BorderWidth="1px" BorderColor="#A0ABEB" PageSize="15" BorderStyle="Solid" BackColor="White" GridLines="Vertical" ForeColor="Black" AllowPaging="True" ShowFooter="True">
<SelectedItemStyle ForeColor="White" BackColor="Black"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle HorizontalAlign="Center" ForeColor="White" BorderColor="#6876C5" BackColor="#6876C5"></HeaderStyle>
<FooterStyle ForeColor="White" BackColor="#6876C5"></FooterStyle>
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<FONT face="">
<asp:CheckBox id="Cb" runat="server"></asp:CheckBox></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="orderid" SortExpression="orderid" HeaderText="ID">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShipCountry" SortExpression="ShipCountry" HeaderText="ShipCountry">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShippedDate" SortExpression="ShippedDate" HeaderText="ShippedDate" DataFormatString="{0:d}">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Freight" SortExpression="Freight" HeaderText="Freight">
<HeaderStyle Width="180px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="ShipAddress" SortExpression="ShipAddress" HeaderText="ShipAddress">
<HeaderStyle Width="480px"></HeaderStyle>
</asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" Position="TopAndBottom" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</form>
Private Function GetDv(ByVal strSort As String) As DataView
'定义数据库连接
Dim dv As DataView
Dim CN As New SqlConnection()
Try
'初始化连接字符串
CN.ConnectionString = "data source=pmserver;
initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"
CN.Open()
'从NorthWind得到orders表的数据
Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
Dim ds As New DataSet()
adp.Fill(ds)
'得到数据视图
dv = ds.Tables(0).DefaultView
Catch ex As Exception
#If DEBUG Then
Session("Error") = ex.ToString()
Response.Redirect("../error.aspx") '跳转程序的公共错误处理页面
#End If
Finally
'关闭连接
CN.Close()
End Try
'排序
dv.Sort = strSort
Return dv
End Function Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
If Not IsPostBack Then
ViewState("strSort") = "orderid"
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End If
End Sub
'排序
Private Sub dgOrder_SortCommand(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand
dgOrder.CurrentPageIndex = 0
'得到排序的列
ViewState("strSort") = e.SortExpression.ToString()
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub '分页
Private Sub dgOrder_PageIndexChanged(ByVal source As Object,
ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged
'得到分页的页号
dgOrder.CurrentPageIndex = e.NewPageIndex
dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
dgOrder.DataBind()
End Sub