DataGrid自动分页的问题

Txxiaoqiang 2009-01-09 06:12:48
为什么分页不管用?我查询出来的数据是对的,是两页,运行程序是只显示一页,下面也没有显示是两页。用的是vs2005 和accesss数据库

前台代码:
<asp:DataGrid ID="dgSpread" runat="server" AllowPaging="True" AutoGenerateColumns="False"
PageSize="2" CssClass="DbGridStyle" Width="100%" OnPageIndexChanged="dgSpread_PageIndexChanged" AllowCustomPaging="True">
<ItemStyle CssClass="ItemStyle"></ItemStyle>
<HeaderStyle CssClass="GridHeadStyle"></HeaderStyle>
<SelectedItemStyle CssClass="SelectedItemStyle" />
<PagerStyle HorizontalAlign="Left" CssClass="GridPagerStyle" Mode="NumericPages"></PagerStyle>
<Columns>
<asp:TemplateColumn HeaderText="纽扣编码">
<HeaderStyle Width="7%"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<asp:HyperLink ID="hyperLinkStat" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "CommodityCode")%>'
NavigateUrl='<%# "NKAdd.aspx?CommodityCode="+DataBinder.Eval(Container.DataItem,"CommodityCode")+"&strJudage=1"%>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="CommodityName" HeaderText="纽扣名称" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="ShortName" HeaderText="纽扣简称" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="FirstCategoryID" HeaderText="一级类别" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="SecondCategoryID" HeaderText="二级类别" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="ThirdCategoryID" HeaderText="三级类别" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="FourthCategoryID" HeaderText="四级类别" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="FifthCategoryID" HeaderText="五级类别" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="sstyle" HeaderText="规格型号" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="Color" HeaderText="纽扣颜色" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="cwhcode" HeaderText="仓库编码" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="cposcode" HeaderText="货位编码" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="Unit" HeaderText="计量单位" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="InPrice" HeaderText="采购单价" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="OutPrice" HeaderText="销售单价" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="cMaker" HeaderText="录入人" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="cMakerdate" HeaderText="录入日期" ReadOnly="True"></asp:BoundColumn>
</Columns>
</asp:DataGrid>



后台代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind(0);
}
}

public void Bind(int index)
{
string sql = "SELECT a.CommodityCode, a.CommodityName, a.ShortName, a.sstyle, a.Color, a.cwhcode, " +
" a.cposcode, a.Unit, a.cMemo, a.cMaker, a.cMakerdate, a.OutPrice, a.KcOnline, " +
" a.KcOffline, a.FirstCategoryID, a.SecondCategoryID, a.ThirdCategoryID, " +
" a.FourthCategoryID, a.FifthCategoryID, a.InPrice" +
" FROM (((((tb_Commodity a INNER JOIN" +
" tb_NKCategory b ON a.FirstCategoryID = b.CategoryID) LEFT OUTER JOIN " +
" tb_NKCategory c ON a.SecondCategoryID = c.CategoryID) LEFT OUTER JOIN " +
" tb_NKCategory d ON a.ThirdCategoryID = d.CategoryID) LEFT OUTER JOIN " +
" tb_NKCategory e ON a.FourthCategoryID = e.CategoryID) LEFT OUTER JOIN " +
" tb_NKCategory F ON a.FifthCategoryID = F.CategoryID)";
function ft = new function();
DataTable dt = ft.GetDataTable(sql);
if (dt.Rows.Count > dgSpread.PageSize)
{
dgSpread.AllowCustomPaging = true;
}
else
{
dgSpread.AllowCustomPaging = false;
}
dgSpread.CurrentPageIndex = index;
dgSpread.DataSource = dt;
dgSpread.DataBind();
}


protected void dgSpread_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
Bind(e.NewPageIndex);
}
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Txxiaoqiang 2009-01-19
  • 打赏
  • 举报
回复
问题解决,后台代码,一个属性启用写错了。
dgSpread.AllowCustomPaging = true;
应该是下面这个:
dgSpread.AllowPaging = true;
粗心造成的。呵呵
杏鲍菇 2009-01-10
  • 打赏
  • 举报
回复
同意1楼
ZCH999999999 2009-01-09
  • 打赏
  • 举报
回复
在属性生成器里试了吗?
cshui918 2009-01-09
  • 打赏
  • 举报
回复
up
gengwanshanreally 2009-01-09
  • 打赏
  • 举报
回复
同上
mengxj85 2009-01-09
  • 打赏
  • 举报
回复
改用Gridview吧,看不出什么问题
wuyq11 2009-01-09
  • 打赏
  • 举报
回复
VB DataGrid分页 请看: 数据库:test2000.mdb 表:numbers 字段:Id(自动编号),anumber(数字) 因为DataGrid控件我们采用直接绑定记录集来显示数据.所以分页处理我们采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.然后绑定DataGrid ''效果还不错 , 我加了详细地注释,像pagesize, AbsolutePage的用法可参考msdn VB中新建工程,form中添加DataGrid控件,按钮cmdPrevious和cmdNext,文本框txtPage ''引用microsoft active data object 2.x object library Option Explicit Dim conn As ADODB.Connection Dim lCurrentPage As Long Private Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage) End If End Sub Private Sub Form_Load() Set conn = New ADODB.Connection conn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;" lCurrentPage = 1 Call Loadcontrol(lCurrentPage) End Sub Private Sub Loadcontrol(lPage As Long) Dim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As Integer Dim lCount As Long ''每页显示的纪录 nPageSize = 10 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic adoPrimaryRS.PageSize = nPageSize ''页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End If adoPrimaryRS.AbsolutePage = lCurrentPage ''定义另一个记录集 Dim objrs As New ADODB.Recordset ''添加字段名称 For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next ''打开记录集 objrs.Open ''将指定记录数循环添加到objrs中 For lCount = 1 To nPageSize objrs.AddNew objrs!id = adoPrimaryRS!id objrs!anumber = adoPrimaryRS!anumber adoPrimaryRS.MoveNext Next ''绑定 Set DataGrid1.DataSource = objrs ''在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCount End Sub Private Sub Form_Unload(Cancel As Integer) If Not conn Is Nothing Then conn.Close End If Set conn = Nothing End Sub ‘文本框中输入页数,回车跳转到指定位置 Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage) End Sub

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧