datagrid分页 下一页上一页无链接
我做了个简单的分页(抄的别人的代码)但是 显示的时候 下一页上一页无链接
在输出的HTML代码中也没有链接
但是页面却没有任何报错
代码如下:Default.aspx
<%@ Page Inherits="Defaultpage" Src="Default.aspx.cs" %>
<html>
<head runat="server">
<title>新闻系统</title>
</head>
<body>
<center>asp.net新闻系统</center>
<table>
<asp:DataGrid ID="xinwen" runat="server" AllowCustomPaging="true" PagerStyle-NextPageText="下一页"
PagerStyle-PrevPageText="上一页"
PagerStyle-Visible="true" AllowPaging="true" PageSize="20" PagerStyle-Mode="NextPrev" OnPageIndexChanged="ChangePage" AutoGenerateColumns="false" EnableViewState="true">
<HeaderStyle BackColor="#00aaaa"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="D_ID" HeaderText="id"/>
<asp:BoundColumn DataField="D_Title" HeaderText="标题"/>
<asp:BoundColumn DataField="D_Writer" HeaderText="作者"/>
<asp:BoundColumn DataField="D_Date" HeaderText="发布时间"/>
</Columns>
</asp:DataGrid>
</table>
</body>
</html>Default.aspx.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Defaultpage : System.Web.UI.Page
{
public DataGrid xinwen;
DataSet ds = new DataSet();
void xinwenBind() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=e:\work\nxy.mdb";
string strSQL = "SELECT D_ID, D_Title, D_Writer, D_Date FROM NewsData";
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConnection);
da.Fill(ds, "NewsData");
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();
}
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
xinwenBind();
}
}
public void ChangePage(Object sender, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();
}
}
我做了个简单的分页(抄的别人的代码)但是 显示的时候 下一页上一页无链接
在输出的HTML代码中也没有链接
但是页面却没有任何报错
代码如下:Default.aspx
<%@ Page Inherits="Defaultpage" Src="Default.aspx.cs" %>
<html>
<head runat="server">
<title>新闻系统</title>
</head>
<body>
<center>asp.net新闻系统</center>
<table>
<asp:DataGrid ID="xinwen" runat="server" AllowCustomPaging="true" PagerStyle-NextPageText="下一页"
PagerStyle-PrevPageText="上一页"
PagerStyle-Visible="true" AllowPaging="true" PageSize="20" PagerStyle-Mode="NextPrev" OnPageIndexChanged="ChangePage" AutoGenerateColumns="false" EnableViewState="true">
<HeaderStyle BackColor="#00aaaa"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="D_ID" HeaderText="id"/>
<asp:BoundColumn DataField="D_Title" HeaderText="标题"/>
<asp:BoundColumn DataField="D_Writer" HeaderText="作者"/>
<asp:BoundColumn DataField="D_Date" HeaderText="发布时间"/>
</Columns>
</asp:DataGrid>
</table>
</body>
</html>Default.aspx.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Defaultpage : System.Web.UI.Page
{
public DataGrid xinwen;
DataSet ds = new DataSet();
void xinwenBind() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=e:\work\nxy.mdb";
string strSQL = "SELECT D_ID, D_Title, D_Writer, D_Date FROM NewsData";
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConnection);
da.Fill(ds, "NewsData");
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();
}
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
xinwenBind();
}
}
public void ChangePage(Object sender, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();
}
}
{
xinwen.CurrentPageIndex = e.NewPageIndex;
//xinwen.DataSource = ds.Tables["NewsData"];
//xinwen.DataBind(); 改成你的方法:xinwenBind() 你去看看
}
de 效果!!!同样的效果
请尝试去掉该句;--------------------------------------------------------------------------------------
遇到此种情况,有两种可能性(不完全总结):
1:添加上了 [AllowCustomPaging="true"];
2:数据总数(即数据库返回的数据总量)小于或等于PageSize值;
或者是返回的数据量小于pagesize
就报错误
System.Web.HttpException: 类型“DataGridLinkButton”的控件“xinwen_ctl24_ctl01”必须放在具有 runat=server 的窗体标记内
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwenBind() ;
}
这样就可以了
还有就是ChangePage()注册事件没?
什么意思
我不懂!!
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwenBind() ;
} 这个该过还是一样
报
错误 1 没有为“Public Sub ChangePage(sender As Object, e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)”的参数“e”指定参数。 E:\work\Default.aspx 9
{
public DataGrid xinwen;不要
DataSet ds = new DataSet();
void xinwenBind() { string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=e:\work\nxy.mdb";
string strSQL = "SELECT D_ID, D_Title, D_Writer, D_Date FROM NewsData";
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbDataAdapter da = new OleDbDataAdapter(strSQL,objConnection);
da.Fill(ds, "NewsData");
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();
}
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
xinwenBind();
}
}
public void ChangePage(Object sender, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwen.DataSource = ds.Tables["NewsData"];
xinwen.DataBind();注释
xinwenBind();
}
}
protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwenBind() ;
}
错误 2 当前上下文中不存在名称“xinwen” E:\work\Default.aspx.cs 27 9 E:\work\
不可能我数据库哭里面又200多记录
错误 1 没有为“Public Sub ChangePage(sender As Object, e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)”的参数“e”指定参数。 E:\work\Default.aspx 9 一样的错误
2。写一个绑定数据源的方法。
3。在pageIndexChange中编写一定的方法,将当前页码加以改变,再绑定新的数据
public partial class TradeNews : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
BindNewsList();
}
} protected void BindNewsList()
{
SqlDataAdapter datpNewsOfHY = new SqlDataAdapter("SELECT bh,bt,zz from newsTable ORDER BY FBSJ DESC", MyConn);
DataSet dsNewsOfHY = new DataSet();
datpNewsOfHY.Fill(dsNewsOfHY, "Tnews");
GridNews.DataSource = dsNewsOfHY.Tables["Tnews"].DefaultView;
GridNews.DataBind();
} protected void GridNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridNews.PageIndex = e.NewPageIndex;
BindNewsList();
}
}
xinwenBind() ;
放在 DataGrid1_PageIndexChanged()里
要是不知道怎么弄 就在datagrid右键属性 的属性页里找到 事件那一页
双击PageIndexChanged 就会注册PageIndexChanged事件 再把
xinwen.CurrentPageIndex = e.NewPageIndex;
xinwenBind() ;
放在里面就可以了
只onPageIndexChanged
可能是不是我的开发环境的问题
visual stdio 2005
楼上的
那我的DataGrid
到底是什么原因
出现这样的问题了
请尝试去掉该句; 针对以下错误:
“AllowCustomPaging="true"去掉了
就报错误
System.Web.HttpException: 类型“DataGridLinkButton”的控件“xinwen_ctl24_ctl01”必须放在具有 runat=server 的窗体标记内”
请在<body></body>节点中添加<form runat="server"></form>窗体标签。请尝试!
--------------------------------------------------------------------------------------
遇到此种情况,有两种可能性(不完全总结):
1:添加上了 [AllowCustomPaging="true"];
2:数据总数(即数据库返回的数据总量)小于或等于PageSize值;
<html>
<head runat="server">
<title>新闻系统</title>
</head>
<body>
<form runat="server">
<center>asp.net新闻系统</center>
<table>
<tr>
<td>
<asp:DataGrid ID="xinwen" runat="server" PagerStyle-NextPageText="下一页" PagerStyle-PrevPageText="上一页" PagerStyle-Visible="true" AllowPaging="true" PageSize="20" PagerStyle-Mode="NextPrev" OnPageIndexChanged="ChangePage" AutoGenerateColumns="false" EnableViewState="true">
<HeaderStyle BackColor="#00aaaa"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="D_ID" HeaderText="id"/>
<asp:BoundColumn DataField="D_Title" HeaderText="标题"/>
<asp:BoundColumn DataField="D_Writer" HeaderText="作者"/>
<asp:BoundColumn DataField="D_Date" HeaderText="发布时间"/>
</Columns>
</asp:DataGrid>
</td>
</tr>
</table>
</form>
</body>
</html>
我的问题已经解决
就是要加<form runat="server" > </form >窗体标签感谢感谢
非常感谢
!!!!
google_ad_client = "pub-9281854226856434";
/* 728x90, 创建于 09-8-28 */
google_ad_slot = "5928234748";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>