用得着这么费事吗?DataGrid支持自动分页呀,三行代码就搞定了!!
解决方案 »
- 电子商务网站 银行
- 支付宝接口的问题
- 接收post传值的问题
- asp.net开发的wap页面中图片(根据编号,gif)动态调用,但在NOKIA6600中手机中无法显示的问题???
- “相似”“相关”解决方法?
- asp.net使用数据库连接池码?
- 怎样使下拉列表框,选择指定的一项
- http://localhost/user/bb.aspx?id=29 如何重定向这个地址呢?我很急啊我很急啊,在线揭贴
- 各位好!请教在HttpWebRequest中的二级域名的Cookie发送处理问题。
- ASP菜鸟问题 急啊 !! 在线等!!!!!
- 刚装好的。NET为什么启动时,显示起始页报错,说缺少对象?对不起,没分了
- 怎样获取Treeview的节点的值?
DtaaGrid1.DataBind()
我用vb.net写的,跟你差不多的,没问题的啊
参考: Sub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs)
'used by external paging UI
Dim arg As String = sender.CommandArgument Select Case arg
'下一页
Case "next"
If (Result_dgd.CurrentPageIndex < (Result_dgd.PageCount - 1)) Then
Result_dgd.CurrentPageIndex += 1
btnFirst.Enabled = True
btnPrev.Enabled = True
End If
'如果已经达到了最后一页,则"下一页"与"最后一页"失效
If (Result_dgd.CurrentPageIndex = Result_dgd.PageCount - 1) Then
btnNext.Enabled = False
btnLast.Enabled = False
End If
'前一页
Case "prev"
If (Result_dgd.CurrentPageIndex > 0) Then
Result_dgd.CurrentPageIndex -= 1
btnNext.Enabled = True
btnLast.Enabled = True
End If
'如果已经为第一页了,则使"前一页"与"最首页"失效
If (Result_dgd.CurrentPageIndex = 0) Then
btnFirst.Enabled = False
btnPrev.Enabled = False
End If
'最后一页
Case "last"
Result_dgd.CurrentPageIndex = (Result_dgd.PageCount - 1)
btnLast.Enabled = False
btnNext.Enabled = False
btnFirst.Enabled = True
btnPrev.Enabled = True
Case Else
'page number
Result_dgd.CurrentPageIndex = System.Convert.ToInt32(arg)
btnLast.Enabled = True
btnNext.Enabled = True
btnPrev.Enabled = False
btnFirst.Enabled = False
End Select
BindGrid()
ShowStats()
End Sub
'result_dgd的ItemDataBind事件,这里用它来截取某一列的字符
Sub Result_dgd_ItemBind(ByVal sender As Object, ByVal e As DataGridItemEventArgs) '重量的列,该为3为小数的
Dim C5 As String()
C5 = e.Item.Cells(5).Text.Split(".")
Try
e.Item.Cells(5).Text = C5(0) + "." + C5(1).Substring(0, 3)
Catch
End Try Dim C7 As String()
C7 = e.Item.Cells(7).Text.Split(".")
Try
e.Item.Cells(7).Text = C7(0) + "." + C7(1).Substring(0, 3)
Catch
End Try Dim C9 As String()
C9 = e.Item.Cells(9).Text.Split(".")
Try
e.Item.Cells(9).Text = C9(0) + "." + C9(1).Substring(0, 3)
Catch
End Try
'支数必须为整数
Dim C6 As String()
C6 = e.Item.Cells(6).Text.Split(".")
e.Item.Cells(6).Text = C6(0) Dim C8 As String()
C8 = e.Item.Cells(8).Text.Split(".")
e.Item.Cells(8).Text = C8(0) Dim C10 As String()
C10 = e.Item.Cells(10).Text.Split(".")
e.Item.Cells(10).Text = C10(0) End Sub
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<HTML>
<HEAD>
<meta content=Visual Basic 7.0 name=CODE_LANGUAGE>
<meta content=javascript name=vs_defaultClientScript>
<meta content=http://schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema>
</HEAD>
<body MS_POSITIONING=GridLayout>
<form id=Form1 runat=server>
<asp:datagrid id=MyDataGrid runat=server AlternatingItemStyle-BackColor=#eeeeee
HeaderStyle-BackColor=#aaaadd Font-Size=8pt Font-Name=Verdana CellSpacing=0
CellPadding=3 GridLines=Both BorderWidth=1 BorderColor=black
OnPageIndexChanged=MyDataGrid_Page PagerStyle-HorizontalAlign=Right
PagerStyle-Mode=NumericPages PageSize=5 AllowPaging=True>
<AlternatingItemStyle BackColor=#EEEEEE></AlternatingItemStyle>
<HeaderStyle BackColor=#AAAADD></HeaderStyle>
<PagerStyle HorizontalAlign=Right Mode=NumericPages></PagerStyle>
</asp:datagrid>
<p style=font-size:9pt>
<asp:label id=lblPageCount runat=server></asp:label>
<asp:label id=lblCurrentIndex runat=server></asp:label>
<asp:linkbutton id=btnFirst onclick=PagerButtonClick runat=server
Font-Name=verdana Font-size=8pt ForeColor=navy CommandArgument=0>
</asp:linkbutton>
<asp:linkbutton id=btnPrev onclick=PagerButtonClick runat=server
Font-Name=verdana Font-size=8pt ForeColor=navy CommandArgument=prev>
</asp:linkbutton>
<asp:linkbutton id=btnNext onclick=PagerButtonClick runat=server
Font-Name=verdana Font-size=8pt ForeColor=navy CommandArgument=next>
</asp:linkbutton>
<asp:linkbutton id=btnLast onclick=PagerButtonClick runat=server
Font-Name=verdana Font-size=8pt ForeColor=navy CommandArgument=last>
</asp:linkbutton>
</p>
</form>
</body>
</HTML>DataGridPaging.aspx.vbImports System.Data.SqlClient
Imports System.Data
Imports System.Web.UIPublic Class DataGridPaging
Inherits System.Web.UI.PageProtected WithEvents MyDataGrid As System.Web.UI.WebControls.DataGrid
Protected WithEvents btnFirst As System.Web.UI.WebControls.LinkButton
Protected WithEvents btnPrev As System.Web.UI.WebControls.LinkButton
Protected WithEvents btnNext As System.Web.UI.WebControls.LinkButton
Protected WithEvents btnLast As System.Web.UI.WebControls.LinkButton
Protected WithEvents lblCurrentIndex As System.Web.UI.WebControls.Label
Protected WithEvents lblPageCount As System.Web.UI.WebControls.Label
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid#Region Web Form Designer Generated Code 'This call is required by the Web Form Designer.
Private Sub InitializeComponent()End SubPrivate Sub Page_Init(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub#End RegionPrivate Sub Page_Load(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles MyBase.Load
btnFirst.Text = 最首页
btnPrev.Text = 前一页
btnNext.Text = 下一页
btnLast.Text = 最后页
OpenDatabase()
BindGrid()
End Sub
Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
Dim startIndex As Integer
startIndex = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize
MyDataGrid.CurrentPageIndex = e.NewPageIndex
BindGrid()
ShowStats()
End SubSub BindGrid()
Dim myConnection As SqlConnection = cn
Dim ds As DataSet = New DataSet()
Dim adapter As SqlDataAdapter = New SqlDataAdapter(Select * from Orders, myConnection)
adapter.Fill(ds, Orders)
MyDataGrid.DataSource = ds.Tables(Orders).DefaultView
MyDataGrid.DataBind()
ShowStats()End SubSub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs)
'used by external paging UI
Dim arg As String = sender.CommandArgumentSelect Case arg
Case next
If (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1)) Then
MyDataGrid.CurrentPageIndex += 1
End If
Case prev
If (MyDataGrid.CurrentPageIndex > 0) Then
MyDataGrid.CurrentPageIndex -= 1
End If
Case last
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1)
Case Else
'page number
MyDataGrid.CurrentPageIndex = System.Convert.ToInt32(arg)
End Select
BindGrid()
ShowStats()
End SubSub ShowStats()
lblCurrentIndex.Text = 第 + (MyDataGrid.CurrentPageIndex + 1).ToString() + 页
lblPageCount.Text = 总共 + MyDataGrid.PageCount.ToString() + 页
End SubPublic cn As New SqlClient.SqlConnection()
Public Sub OpenDatabase()
cn.ConnectionString = Server=.;Database=NorthWind;User Id=sa;Password=;
cn.Open()
End Sub
End Class
Math.DivRem 并不包含定义用DataGrid的自动分页功能吧,稍微加点代码,就可以支持直接跳转到某页
给个例子行么我需要c#的
改成
a1=numResults % pageSize;
pageCount=a1;
改成
a1=numResults % pageSize;
pageCount=numResults / pageSize;
这个可以了!我试验过了!
{
int lngTotalPages=0; //总页数
int lngStartRecNo=0; //开始记录号
int lngEndRecNo=0; //结束记录号 int[] RecOfTableInfo=new int[4]; //定义一个表信息记录对象
System.Data.DataSet objDataSetToReturn=new DataSet(objDataSet.DataSetName); if(pintPageNo<1 || pintRecsPerPage<1) //如果是非法参数
{
return null;
}
if(objDataSet==null) //如果查询结果为空值,返回空
{
return null;
} objDataSetToReturn=objDataSet.Clone(); //克隆一个数据集对象,不包括数据 objDataSetToReturn.Tables.Add("TableInfo"); //创建查询结果表的基本信息记录表
objDataSetToReturn.Tables["TableInfo"].Columns.Add("TotalPages",Type.GetType("System.Int32")); //增加总页数
objDataSetToReturn.Tables["TableInfo"].Columns.Add("TotalRecs",Type.GetType("System.Int32")); //增加总记录数
objDataSetToReturn.Tables["TableInfo"].Columns.Add("CurPage",Type.GetType("System.Int32")); //增加当前页号
objDataSetToReturn.Tables["TableInfo"].Columns.Add("CurRecs",Type.GetType("System.Int32")); //增加当前页记录数 DataRow objDataRow=objDataSetToReturn.Tables["TableInfo"].NewRow();
lngTotalPages=objDataSet.Tables[objDataSet.DataSetName].Rows.Count/pintRecsPerPage;
if((objDataSet.Tables[objDataSet.DataSetName].Rows.Count%pintRecsPerPage)>0) //如果没有整除
{
lngTotalPages=lngTotalPages+1;
} RecOfTableInfo[0]=lngTotalPages;
RecOfTableInfo[1]=objDataSet.Tables[objDataSet.DataSetName].Rows.Count;
if(pintPageNo>lngTotalPages)
{
pintPageNo=lngTotalPages;
}
RecOfTableInfo[2]=pintPageNo;
if(pintPageNo==lngTotalPages) //如果等于最后页设置当前页面记录数
{
if((objDataSet.Tables[objDataSet.DataSetName].Rows.Count%pintRecsPerPage)>0) //如果没有整除
{
RecOfTableInfo[3]=objDataSet.Tables[objDataSet.DataSetName].Rows.Count%pintRecsPerPage;
}
else
{
RecOfTableInfo[3]=pintRecsPerPage; }
}
else
{
RecOfTableInfo[3]=pintRecsPerPage; }
lngStartRecNo=(pintPageNo-1)*pintRecsPerPage; //开始记录号
lngEndRecNo=lngStartRecNo+RecOfTableInfo[3]-1; //结束记录号 objDataRow.ItemArray=new object[]{RecOfTableInfo[0],RecOfTableInfo[1],RecOfTableInfo[2],RecOfTableInfo[3]};
objDataSetToReturn.Tables["TableInfo"].Rows.Add(objDataRow); //记录查询结果的相应数据 for(int i=lngStartRecNo;i<=lngEndRecNo;i++)
{
try
{
objDataSetToReturn.Tables[objDataSet.DataSetName].Rows.Add(objDataSet.Tables[objDataSet.DataSetName].Rows[i].ItemArray);
}
catch(Exception e)
{
return null;
}
}
return objDataSetToReturn; } }