----------------高手,关于DataGrid分页的问题,送100分--------------------------- http://dotnet.aspx.cc/ShowDetail.aspx?id=B12283DE-DB20-4322-ACCC-12724442808A 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!IsPostBack) { DataShow(); } } private void DataShow() //初始化页面,绑定MyDataGrid1 { OleDbConnection myConnection; myConnection = new OleDbConnection( ConnectString); OleDbDataAdapter myCommand = new OleDbDataAdapter(sql_str, myConnection); DataSet ds = new DataSet(); myCommand.Fill(ds, "t1"); DataTable dt=ds.Tables ["t1"]; ViewState["table"]=(DataTable)dt; BindGrid(); } private void BindGrid() //绑定dgEmps { dgEmps.DataSource =(DataTable)ViewState["table"]; try { dgEmps.DataBind(); } catch { int i=dgEmps.CurrentPageIndex; while(i>=dgEmps.PageCount) { i--; } dgEmps.CurrentPageIndex=i; dgEmps.DataBind (); } }private void dgEmps_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { dgEmps.CurrentPageIndex=e.NewPageIndex; //分页控制 BindGrid(); } http://dotnet.aspx.cc/..找个相对应的例子好好看一下啦 在程序前面加上这句if(IsPostBack){ return; } 你的程序翻页后执行了Page_Load(),所以不能翻页,点翻页后还是第一页,加上if(IsPostBack){ return; }后应该可以了 你在页面的grid的属性设计里选择‘允许分页’就可以了呀要不你就参考以下代码:<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" AllowPaging="True"> <HeaderStyle></HeaderStyle><Columns> <asp:BoundColumn DataField="Name" HeaderText="名称"></asp:BoundColumn> …… </Columns><PagerStyle Mode="NumericPages"></PagerStyle>//加上这句</asp:datagrid> 在页面的grid的属性设计里选择‘允许分页’就可以了呀 不能用ExecuteReader,那个是SqlDataReader接受的,而且每次只能取一条记录。应该换用DataSet.如下:<%@Import Namespace="System.Data" %><%@Import Namespace="System.Data.OleDb" %><script Language="C#" runat="server">void Page_Load(){string strConnection="Provider=Microsoft.Jet.OleDb.4.0;"; strConnection +=@"Data Source=E:\ASPNET\TEST\Northwind.mdb"; string strSQL="Select * from products;"; OleDbConnection objConnection=new OleDbConnection(strConnection); OleDbCommand objCommand=new OleDbCommand(strSQL,objConnection);DataSet myDataSet=new DataSet();OleDbAdapter myAdapter=new OldDbAdapter; objConnection.Open();myAdapter.SelectCommand=objCommand;myAdapter.Fill(myDataSet);dgEmps.DataSource=myDataSet.Tables[0];dgEmps.DataBind(); } AllowCustomPaging="True" 改为AllowCustomPaging="False" _________不能用ExecuteReader,那个是SqlDataReader接受的,而且每次只能取一条记录。应该换用DataSet._________这个说法是错误的,SqlDataReader可以用来绑定数据, fengziwei(伟伟) 可以试试看 AllowCustomPaging="False" AllowPaging="True"-----------------------------------------我是楼主:为什么,我的.NET程序用了上面这两句就会出现以下错误:错误:AllowCustomPaging 必須為 true,且當 AllowPaging 設為 'true' 且所選取的資料來源沒有實作 ICollection 時,必須為 ID 為 dgEmps 的 DataGrid 設定 VirtualItemCount。 你的代码加上AutoGenerateColumns="True" 以及设置PageSize 自动绑定列自动为true,不用设置吧。 http://community.csdn.net/Expert/topic/3349/3349966.xml?temp=.6484033 void DEDR_Page(Object sender, DataGridPageChangedEventArgs e) { dgEmps.CurrentPageIndex = e.NewPageIndex; dgEmps.DataBind(); }没有给dgEmps指定数据原dgEmps.DataSourse="xx"; 请问一个c#查询sql数据库中日期的问题? C# 如何控制麦克风与扬声器的音量 C#如何屏蔽Windows登陆对话框中的取消按钮 部署安装程序的问题 请问:如何将UNIX时间化为当前系统时间?(注一个UNIX时间为4个字节)哪位高手可以转化一下 如何使c#开发的程序界面支持多国语言? 怎么做Crc16校验 CRC多项式0x1021 C#中如何让扬声器发出“嘀”声? 函数缺省值? "一个进销存系统,购买入库,出库,打折,赠货等都可以用触发器和存储过程来实现"(nkdzc语)--具体是如何使用触发器和存储过程? nkdzc请进 如何得到储存过程的返回值? 求教一个简单问题: 如何去掉逗号呢?
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{ DataShow();
}
} private void DataShow() //初始化页面,绑定MyDataGrid1
{
OleDbConnection myConnection;
myConnection = new OleDbConnection( ConnectString);
OleDbDataAdapter myCommand = new OleDbDataAdapter(sql_str, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "t1");
DataTable dt=ds.Tables ["t1"];
ViewState["table"]=(DataTable)dt;
BindGrid();
} private void BindGrid() //绑定dgEmps
{
dgEmps.DataSource =(DataTable)ViewState["table"];
try
{
dgEmps.DataBind();
}
catch
{
int i=dgEmps.CurrentPageIndex;
while(i>=dgEmps.PageCount)
{
i--;
}
dgEmps.CurrentPageIndex=i;
dgEmps.DataBind ();
}
}private void dgEmps_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
dgEmps.CurrentPageIndex=e.NewPageIndex; //分页控制
BindGrid();
}
if(IsPostBack)
{
return;
}
if(IsPostBack)
{
return;
}
后应该可以了
要不你就参考以下代码:
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" AllowPaging="True"> <HeaderStyle></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="Name" HeaderText="名称"></asp:BoundColumn>
……
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>//加上这句
</asp:datagrid>
如下:
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.OleDb" %>
<script Language="C#" runat="server">
void Page_Load()
{
string strConnection="Provider=Microsoft.Jet.OleDb.4.0;";
strConnection +=@"Data Source=E:\ASPNET\TEST\Northwind.mdb";
string strSQL="Select * from products;";
OleDbConnection objConnection=new OleDbConnection(strConnection); OleDbCommand objCommand=new OleDbCommand(strSQL,objConnection);DataSet myDataSet=new DataSet();
OleDbAdapter myAdapter=new OldDbAdapter;
objConnection.Open();
myAdapter.SelectCommand=objCommand;
myAdapter.Fill(myDataSet);
dgEmps.DataSource=myDataSet.Tables[0];
dgEmps.DataBind(); }
改为AllowCustomPaging="False" _________
不能用ExecuteReader,那个是SqlDataReader接受的,而且每次只能取一条记录。应该换用DataSet.
_________
这个说法是错误的,SqlDataReader可以用来绑定数据, fengziwei(伟伟) 可以试试看
AllowPaging="True"
-----------------------------------------
我是楼主:为什么,我的.NET程序用了上面这两句就会出现以下错误:错误:
AllowCustomPaging 必須為 true,且當 AllowPaging 設為 'true' 且所選取的資料來源沒有實作 ICollection 時,必須為 ID 為 dgEmps 的 DataGrid 設定 VirtualItemCount。
AutoGenerateColumns="True"
以及设置PageSize
{
dgEmps.CurrentPageIndex = e.NewPageIndex;
dgEmps.DataBind();
}
没有给dgEmps指定数据原
dgEmps.DataSourse="xx";