小妹问一个有关DataGrid分页的问题

li_qingtian 2005-07-02 08:41:41
最近在用DataGrid在网页上显示检索的数据时,在已设置DataGrid分页属性的情况下,为什么我点击下一页却不显示下一页的数据信息呢?是不是需要在DataGridPageChanged事件中编写换页脚本,如果是,该脚本是不是需要重新检索数据源后再次绑定到DataGrid?
...全文
267 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lako 2005-07-04
  • 打赏
  • 举报
回复
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
DataGrid1.CurrentPageIndex = e.NewPageIndex
DataGrid1.DataBind()

Dim argSend As System.Object
Dim argE As System.Web.UI.ImageClickEventArgs
btnSearch_Click(argSend, argE)
End Sub
gragon 2005-07-03
  • 打赏
  • 举报
回复
我怀疑的读取数据全部放在PAGE_LOAD()里面,所以到了页面POSTBACK的时候还是读取第一页的数据。建议在PAGE_LOAD()里面加上
if(!Page.IsPostBack)
{
InitForm();
}
private void InitForm()
{
将你的查询语句输入到这个地方来。
}

尘离序散 2005-07-03
  • 打赏
  • 举报
回复
我这里有DataGrid的分页实现步骤,
二、实现DataGrid分页;
Step1:选项设置;
选定DataGrid,右击-->属性生成器(或属性页)-->属性生成器-->分页选项卡,把“允许分页”选上,并设置分页显示的其他属性。确定关闭属性生成器。

Step2:事件的设置:
加入SelectedIndexChanged事件(点击事件)
方法为空。
加入PageIndexChanged事件(点击事件)
绑定事件,加入代码:
Private void PageIndexChanged()
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.BindData();
}


图9-7
Step3:运行就可以得到分页显示的效果。

大家可以去试试,我觉得这是比较简单的方法。愿意给大家分享!
老戴12345654 2005-07-02
  • 打赏
  • 举报
回复
http://edu.tmn.cn/html/9/76/197/2005217/17841.htm
renyu732 2005-07-02
  • 打赏
  • 举报
回复
http://sz.luohuedu.net/xml/ShowDetail.asp?id=B12283DE-DB20-4322-ACCC-12724442808A


或者你可能用www.webdiyer.com的分页控件.
f_lorelei 2005-07-02
  • 打赏
  • 举报
回复
换2.0吧...GridView特别好用...datagrid我没用过,是从2.0起步的.现在也有些经验了.希望和大家一起交流....留下我的MSN:icehyp@hotmail.com
clbo 2005-07-02
  • 打赏
  • 举报
回复
楼主可以去这里看看,很基础的。
http://chs.gotdotnet.com/quickstart/aspplus/
希望对你有点帮助,呵呵!
xclzteb 2005-07-02
  • 打赏
  • 举报
回复
楼上是分页显示,要实现分页传送可以参考:
http://lzljcqbsc.vicp.net/download/info/162.htm
littlekeen 2005-07-02
  • 打赏
  • 举报
回复
这是c# 的,改改就可以了
littlekeen 2005-07-02
  • 打赏
  • 举报
回复
private void InitializeComponent()
{
...
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
...
}

...
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.EditItemIndex=-1;
this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
this.bind_grid();
}
...
li_qingtian 2005-07-02
  • 打赏
  • 举报
回复
to Study_Now(感动CSDN): 虽然我是用asp.net开发项目,可是我的编码基本上都是在xxx.vbx中编写的,能给我一个示例吗,谢谢~~~~
Study_Now 2005-07-02
  • 打赏
  • 举报
回复
这里我实现了DataGrid的个性化分页,现在把代码贴出来朋友们参考,同时在这个功能的实现过程,参考了“飞刀”从国外翻译的一篇文章。



  先定义ASPX页面,注意AllowCustomPaging要设为"False":
<body>
<form id="DictList" method="post" runat="server">
<TABLE style="BORDER-COLLAPSE: collapse" cellSpacing="0" width="100%" border="1">
<TR>
<td bgColor="#c0c000">信息:<FONT face="Arial" color="#ffffff">数据维护</FONT>
</td>
</TR>
<tr>
<td><FONT face="宋体"></FONT></td>
</tr>
<tr>
<td><asp:datagrid id="MyDataGrid" runat="server" Width="100%" PageSize="20" AllowPaging="True" AutoGenerateColumns="False" DataKeyField="FDictid">
<SelectedItemStyle BackColor="#FFC080"></SelectedItemStyle>
<HeaderStyle BackColor="#C0C000"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="选择" HeaderText="选择" CommandName="Select">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" Width="8%"></HeaderStyle>
<ItemStyle Font-Bold="True" HorizontalAlign="Center"></ItemStyle>
</asp:ButtonColumn>
<asp:BoundColumn DataField="FDictID" SortExpression="FDictID asc" HeaderText="标识号">
<HeaderStyle Width="15%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="FNameCn" SortExpression="FNameCn asc" HeaderText="名称">
<HeaderStyle Width="15%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="FNameEn" SortExpression="FNameEn asc" HeaderText="英文名称">
<HeaderStyle Width="15%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="FNote" SortExpression="FNote asc" HeaderText="描叙">
<HeaderStyle Width="47%"></HeaderStyle>
</asp:BoundColumn>
</Columns>
<PagerStyle Visible="False"></PagerStyle>
</asp:datagrid></td>
</tr>
</TABLE>
<TABLE style="BORDER-COLLAPSE: collapse" cellSpacing="0" width="100%" bgColor="#ff9966" border="1">
<TR>
<td align="right"><asp:linkbutton id="btnFirst" runat="server" CommandArgument="fist">首页</asp:linkbutton>  
<asp:linkbutton id="btnPrev" runat="server" Width="36px" CommandArgument="prev">上一页</asp:linkbutton>  
<asp:linkbutton id="btnNext" runat="server" CommandArgument="next">下一页</asp:linkbutton>  
<asp:linkbutton id="btnLast" runat="server" CommandArgument="last">末页</asp:linkbutton>  
<asp:label id="lblCurrentIndex" runat="server"></asp:label>/<asp:label id="lblPageCount" runat="server"></asp:label>  
跳转到<asp:TextBox id="txtGoPage" runat="server" Width="30px" CssClass="textbox"></asp:TextBox>
<asp:Button id="btnGo" runat="server" Text="GO" CssClass="button" Width="29px"></asp:Button></td>
</TR>
</TABLE>
</form>







codebehind主要功能部分代码:



private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
myConnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString"]);

if (!IsPostBack)
BindGrid();
}



public void BindGrid()
{
string strSql ="SELECT * FROM t_dict ";
SqlDataAdapter myCommand = new SqlDataAdapter(strSql, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "t_dict");
MyDataGrid.DataSource=ds.Tables["t_dict"].DefaultView;
MyDataGrid.DataBind();
ShowStatsPage();
}

private void PagerButtonClick(object sender, System.EventArgs e)
{
//获得LinkButton的参数值
String arg = ((LinkButton)sender).CommandArgument;

switch(arg)
{
case ("next"):
if (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1))
MyDataGrid.CurrentPageIndex ++;
break;
case ("prev"):
if (MyDataGrid.CurrentPageIndex > 0)
MyDataGrid.CurrentPageIndex --;
break;
case ("fist"):
MyDataGrid.CurrentPageIndex=0;
break;
case ("last"):
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1);
break;
default:
//本页值
MyDataGrid.CurrentPageIndex = Convert.ToInt32(arg);
break;
}
BindGrid();
}

void ShowStatsPage()
{
//显示页面信息
lblCurrentIndex.Text = "[<font color="blue">当前为第:" + ((int)MyDataGrid.CurrentPageIndex+1) + "页</font>]";
lblPageCount.Text = "[<font color="blue">共:" + MyDataGrid.PageCount + "页</font>]";
}



private void MyDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//处理按下数字的方法
MyDataGrid.CurrentPageIndex = e.NewPageIndex;
BindGrid();
}



private void btnGo_Click(object sender, System.EventArgs e)
{
//页面直接跳转的代码
if(txtGoPage.Text.Trim()!="")
{
int PageI=Int32.Parse(txtGoPage.Text.Trim())-1;
if (PageI >=0 && PageI < (MyDataGrid.PageCount))
MyDataGrid.CurrentPageIndex = PageI ;
}
BindGrid();
}
//----------------------翻页代码结束
Study_Now 2005-07-02
  • 打赏
  • 举报
回复
是的

62,046

社区成员

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

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

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

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