| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1713 人关注过本帖
标题:笨笨姐用你教的DataGrid分页法出现问题了
只看楼主 加入收藏
shayatou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-26
收藏
 问题点数:0 回复次数:14 
笨笨姐用你教的DataGrid分页法出现问题了

下面是错误代码,请笨笨姐看看,谢谢。

当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时,AllowCustomPaging 必须为真,并且 ID 为 DataGrid1 的 DataGrid 必须设置 VirtualItemCount。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时,AllowCustomPaging 必须为真,并且 ID 为 DataGrid1 的 DataGrid 必须设置 VirtualItemCount。

源错误:


行 35: this.DataGrid1.DataKeyField="id";
行 36: this.DataGrid1.DataSource=dr;
行 37: this.DataGrid1.DataBind();
行 38: }
行 39:

源文件: c:\inetpub\wwwroot\mybook\admin_manage.aspx.cs 行: 37

堆栈跟踪:


[HttpException (0x80004005): 当 AllowPaging 设置为真并且选定的数据源不实现 ICollection 时,AllowCustomPaging 必须为真,并且 ID 为 DataGrid1 的 DataGrid 必须设置 VirtualItemCount。]
System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource)
System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e)
System.Web.UI.WebControls.BaseDataList.DataBind()
Mybook.manage.BindToDataGrid() in c:\inetpub\wwwroot\mybook\admin_manage.aspx.cs:37
Mybook.manage.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\mybook\admin_manage.aspx.cs:25
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()

搜索更多相关主题的帖子: DataGrid 堆栈 数据源 AllowPaging ICollection 
2006-05-05 16:31
shayatou
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-26
收藏
得分:0 


private void Page_Load(object sender, System.EventArgs e)

{

if (!this.IsPostBack)

{

DataGridBind();

}

}

private void DataGridBind()

{

OleDbConnenction con = new OleDbConnenction(连接access数据库串);
con.open();
OleDbCommand cmd=new OleDbCommand("select * from test",con);
OleDbDataReader dr=cmd.excuder......
this..datasource=dr;
this.DataGrid1.databind();

}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

{

this.DataGrid1.CurrentPageIndex = e.NewPageIndex;

DataGridBind();

}

2006-05-05 16:39
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 

OleDbDataReader dr=cmd.excuder......
this..datasource=dr;
this.DataGrid1.databind();

我可没有教过用OleDbDataReader分页啊。OleDbDataReader是不能分页、排序的。如果要分页、排序的话,一般都是用dataview来做的。


欢迎光临我的博客: http://smallfools.blog./default.html
2006-05-05 17:38
lanjinbo
Rank: 1
等 级:新手上路
威 望:1
帖 子:109
专家分:0
注 册:2006-4-14
收藏
得分:0 
DataGrid 可以自动分页的啊,在它的“属性”里面有个分页选项,只要选中就可以自己实现分页功能了。

天蓝蓝,水蓝蓝,扬帆远航,有鱼儿作伴 风嘻嘻,云嘻嘻,共渡幸福彼岸
2006-05-06 00:13
jgh8041
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2004-12-12
收藏
得分:0 
难道用了OleDbDataReader,就不能使用DataGrid分页功能了吗?
那为什么属性生成器里仍有该项目.还可用.
使用了DataView就不能再用DataGrid了吗.
用DataView怎么做,能否再指点一下.

全国最大的免费空间http://fw3./sysweb/RegTrans.aspx?CodeProvider=jgh8041
2006-06-07 10:26
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 
把OleDbDataReader换成DataView就行了。

欢迎光临我的博客: http://smallfools.blog./default.html
2006-06-07 14:16
jgh8041
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2004-12-12
收藏
得分:0 

不行,提示:
error CS0029: 无法将类型“System.Data.OleDb.OleDbDataReader”隐式转换为“System.Data.DataView”

代码:
private void Binding()

{
string connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+MapPath("Aspnet.mdb")+";";
OleDbConnection Conn=new OleDbConnection(connstr);
string strCom;
strCom="SELECT PostID,Subject,UserInfo.UserName,Newpost.RegTime,Newpost.WebSite,Email FROM Newpost,UserInfo where Newpost.UserName=UserInfo.UserName ORDER BY Newpost.RegTime DESC";
OleDbCommand formCommand=new OleDbCommand(strCom,Conn);
Conn.Open();
DataView formReader=formCommand.ExecuteReader();
DG.DataSource=formReader;
DG.DataBind();
Conn.Close();


}


全国最大的免费空间http://fw3./sysweb/RegTrans.aspx?CodeProvider=jgh8041
2006-06-08 07:00
jgh8041
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2004-12-12
收藏
得分:0 
强制类型转换也不行.

全国最大的免费空间http://fw3./sysweb/RegTrans.aspx?CodeProvider=jgh8041
2006-06-08 07:03
daisycutter
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-2-23
收藏
得分:0 

首先在DataGrid控件定义上加一个AllowPaging属性,将其设置为True(默认为False)
<asp:DataGird id="..." runat="server"
…………………
AllowPaging="True"
……………………
</asp:DataGird>

public void Page_Load(Object sender,EventArgs e)

{
string connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+MapPath("Aspnet.mdb")+";";
OleDbConnection Conn=new OleDbConnection(connstr);
Conn.Open();
}
if(!Page.IsPostBack)
{
BindGrid();
}

ICollection CreateTable()
{
string strCom="SELECT PostID,Subject,UserInfo.UserName,Newpost.RegTime,Newpost.WebSite,Email FROM Newpost,UserInfo
where Newpost.UserName=UserInfo.UserName ORDER BY Newpost.RegTime DESC";
DataSet ds=new DataSet();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strCom,Conn);

MyAdapter.Fill(ds,"Newpost");
Return ds.Table["Newpost"].DefaultView;
}

private void Binding()
{
DG.DataSource=CreateTable();
DG.DataBind();
}





2006-06-10 15:40
daisycutter
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-2-23
收藏
得分:0 
添加OnPageIndexChanged

public void DataGrid_PageChanged(Object sender,DataGridPageChangedEventArgs e)
{
DG.CurrentPageIndex=e.NewPageIndex;
BindGrid();
}
2006-06-10 15:46
快速回复:笨笨姐用你教的DataGrid分页法出现问题了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017514 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved