如下代码在分页的时候点1,2页是正常的。。但是点3和3之后就没有变化了,始终显示第2页的数据,请问是什么问题?
namespace CsharpNew
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Configuration; public class WriteBook : System.Web.UI.UserControl
{ protected System.Web.UI.WebControls.DataGrid DGProList;
int i = 0;
DataSet myDataSet = new DataSet();
protected System.Web.UI.WebControls.Panel ProductPanel;
string strImgName = "";
OleDbConnection Connection = new OleDbConnection(); private void Page_Load(object sender, System.EventArgs e)
{
OpenDatabase();
BindGrid();
} public void OpenDatabase()
{
Connection.ConnectionString = ConfigurationSettings.AppSettings["connectionString"];
Connection.Open();
} public void BindGrid()
{
OleDbConnection myConnection = Connection;
OleDbDataAdapter adapter = new OleDbDataAdapter("select id,title,body,sex,name from WriteBook order by id",myConnection);
adapter.Fill(myDataSet, "ProductFiles");
DGProList.DataSource = myDataSet.Tables["ProductFiles"].DefaultView;
DGProList.DataBind();
} private void DGProList_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DGProList.CurrentPageIndex = e.NewPageIndex;
BindGrid();
} private void DGProList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType t = e.Item.ItemType;
if(t ==ListItemType.Item || t==ListItemType.AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("title","Double to see detail"); System.Web.UI.WebControls.Label LabName = new Label();
System.Web.UI.WebControls.Label LabTitle = new Label();
System.Web.UI.WebControls.ImageButton Img = new ImageButton();
System.Web.UI.WebControls.Label LabBody = new Label();
System.Web.UI.WebControls.Label LabId = new Label();
System.Web.UI.WebControls.Label LabelTime = new Label();
System.Web.UI.WebControls.LinkButton LinkWrite = new LinkButton(); Img = (ImageButton)e.Item.FindControl("Img");
Img.Width = 50;
Img.Height = 30;
Img.ImageUrl = myDataSet.Tables["ProductFiles"].Rows[i]["Id"].ToString() + ".jpg";
LabName = (Label)e.Item.FindControl("LabName");
LabName.Width = 50;
LabName.Height = 15;
LabName.Text = myDataSet.Tables["ProductFiles"].Rows[i]["name"].ToString();
i = i + 1;
}
}
}
}
namespace CsharpNew
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Configuration; public class WriteBook : System.Web.UI.UserControl
{ protected System.Web.UI.WebControls.DataGrid DGProList;
int i = 0;
DataSet myDataSet = new DataSet();
protected System.Web.UI.WebControls.Panel ProductPanel;
string strImgName = "";
OleDbConnection Connection = new OleDbConnection(); private void Page_Load(object sender, System.EventArgs e)
{
OpenDatabase();
BindGrid();
} public void OpenDatabase()
{
Connection.ConnectionString = ConfigurationSettings.AppSettings["connectionString"];
Connection.Open();
} public void BindGrid()
{
OleDbConnection myConnection = Connection;
OleDbDataAdapter adapter = new OleDbDataAdapter("select id,title,body,sex,name from WriteBook order by id",myConnection);
adapter.Fill(myDataSet, "ProductFiles");
DGProList.DataSource = myDataSet.Tables["ProductFiles"].DefaultView;
DGProList.DataBind();
} private void DGProList_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DGProList.CurrentPageIndex = e.NewPageIndex;
BindGrid();
} private void DGProList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType t = e.Item.ItemType;
if(t ==ListItemType.Item || t==ListItemType.AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("title","Double to see detail"); System.Web.UI.WebControls.Label LabName = new Label();
System.Web.UI.WebControls.Label LabTitle = new Label();
System.Web.UI.WebControls.ImageButton Img = new ImageButton();
System.Web.UI.WebControls.Label LabBody = new Label();
System.Web.UI.WebControls.Label LabId = new Label();
System.Web.UI.WebControls.Label LabelTime = new Label();
System.Web.UI.WebControls.LinkButton LinkWrite = new LinkButton(); Img = (ImageButton)e.Item.FindControl("Img");
Img.Width = 50;
Img.Height = 30;
Img.ImageUrl = myDataSet.Tables["ProductFiles"].Rows[i]["Id"].ToString() + ".jpg";
LabName = (Label)e.Item.FindControl("LabName");
LabName.Width = 50;
LabName.Height = 15;
LabName.Text = myDataSet.Tables["ProductFiles"].Rows[i]["name"].ToString();
i = i + 1;
}
}
}
}
解决方案 »
- 如何实现用上下键移动GridView的选中项?
- 关于在数据源控件下生成静态页面
- 错误:error 1001 无法创建 Installercdb安装程序类型的实例 打包部署web项目并创建数据库时
- sql模糊查询问题
- 怎么去取得根目录
- HTTP500错误
- 从.netWinform转到 WebForm的编程应该注意从什么地方入手。
- 求解:Microsoft JScript 运行时错误: 对象不支持此属性或方法
- 妹妹问问题,请各位虾哥哥帮忙!!!!!!!!!!!!!!!!!!!!!!!!
- 怎样修改Web.Config中的aspSettings中的值?
- fancyf 进来,再请教
- label的换行问题! 无论怎么改属性都不能自动换行
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
OpenDatabase();
BindGrid();
} }
id name
1 wg
2 y2y
3 lx
4 gaoshan我测试用的是一页显示一条数据
if(!IsPostBack)
{
OleDbConnection myConnection = Connection;
OleDbDataAdapter adapter = new OleDbDataAdapter("select id,title,body,sex,name from WriteBook order by id",myConnection);
adapter.Fill(myDataSet, "ProductFiles");
//这里按自己的需求生成ViewState的ID....也可以静态的
ViewState["DataList"]=myDataSet;
DGProList.DataSource = myDataSet;
DGProList.DataBind();
}
//分页激发函数
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DGProList.DataSource=(DataSet)ViewState["DataList"]
DGProList.CurrentPageIndex=e.NewPageIndex;
DGProList.DataBind();
}
而且datagrid的绑定是在激发事件的时候绑定的.不可能显示不了datagird的
{
DGProList.DataSource=(DataSet)ViewState["DataList"]
DGProList.CurrentPageIndex=e.NewPageIndex;
//这里执行了绑定,不可能加了Ispostback会显示不了datagird的
DGProList.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
OpenDatabase();
BindGrid();
}
} public void OpenDatabase()
{
Connection.ConnectionString = ConfigurationSettings.AppSettings["connectionString"];
Connection.Open();
} public void BindGrid()
{
OleDbConnection myConnection = Connection;
OleDbDataAdapter adapter = new OleDbDataAdapter("select id,title,body,sex,name from WriteBook order by id",myConnection);
adapter.Fill(myDataSet, "ProductFiles");
//DGProList.DataSource = myDataSet.Tables["ProductFiles"].DefaultView;
DGProList.DataSource = myDataSet;
ViewState["DataList"]=myDataSet;
myDataSet = (DataSet)ViewState["DataList"];
DGProList.DataSource = myDataSet;
DGProList.DataBind();
}
#region Web フォーム デザイナで生成されたコード
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: この呼び出しは、ASP.NET Web フォーム デザイナで必要です。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// デザイナ サポートに必要なメソッドです。- このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.DGProList.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DGProList_PageIndexChanged);
this.DGProList.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DGProList_ItemDataBound);
this.DGProList.SelectedIndexChanged += new System.EventHandler(this.Page_Load);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DGProList_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DGProList.DataSource=(DataSet)ViewState["DataList"];
DGProList.CurrentPageIndex=e.NewPageIndex;
DGProList.DataBind();
//DGProList.CurrentPageIndex = e.NewPageIndex;
//BindGrid();
} private void DGProList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType t = e.Item.ItemType;
if(t ==ListItemType.Item || t==ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#F4F8FD'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='white'");
e.Item.Cells[0].Attributes.Add("title","Double to see detail"); System.Web.UI.WebControls.Label LabName = new Label();
System.Web.UI.WebControls.Label LabTitle = new Label();
System.Web.UI.WebControls.ImageButton Img = new ImageButton();
System.Web.UI.WebControls.Label LabBody = new Label();
System.Web.UI.WebControls.Label LabId = new Label();
System.Web.UI.WebControls.Label LabelTime = new Label();
System.Web.UI.WebControls.LinkButton LinkWrite = new LinkButton(); Img = (ImageButton)e.Item.FindControl("Img");
Img.Width = 50;
Img.Height = 30;
Img.ImageUrl = myDataSet.Tables["ProductFiles"].Rows[i]["Id"].ToString() + ".jpg"; //string strDestUrl = myDataSet.Tables["ProductFiles"].Rows[i]["Id"].ToString();
//Img.Attributes.Add("onclick","javascript:var pageStyle = '';pageStyle = 'toolbar=no,location=no,directories=no,status=no,scrollbars,menubar=no,resizable=no,width=600,height=400,left=100'; window.open("+strDestUrl+"+'.asp?JudgeValue="+strDestUrl+"','SWindow1',pageStyle);");
LabName = (Label)e.Item.FindControl("LabName");
LabName.Width = 50;
LabName.Height = 15;
LabName.Text = myDataSet.Tables["ProductFiles"].Rows[i]["name"].ToString(); LabTitle = (Label)e.Item.FindControl("LabTitle");
LabTitle.Width = 50;
LabTitle.Height = 15;
LabTitle.Text = myDataSet.Tables["ProductFiles"].Rows[i]["id"].ToString(); LabBody = (Label)e.Item.FindControl("LabBody");
LabBody.Width = 50;
LabBody.Height = 15;
LabBody.Text = myDataSet.Tables["ProductFiles"].Rows[i]["title"].ToString(); LabId = (Label)e.Item.FindControl("LabId");
LabId.Width = 50;
LabId.Height = 15;
LabId.Text = myDataSet.Tables["ProductFiles"].Rows[i]["sex"].ToString(); LabelTime = (Label)e.Item.FindControl("LabelTime");
LabelTime.Width = 50;
LabelTime.Height = 15;
LabelTime.Text = myDataSet.Tables["ProductFiles"].Rows[i]["body"].ToString(); LinkWrite = (LinkButton)e.Item.FindControl("LinkWrite");
LinkWrite.Width = 50;
LinkWrite.Height = 15;
LinkWrite.Text = myDataSet.Tables["ProductFiles"].Rows[i]["Name"].ToString(); i = i + 1;
}
}
i = i + 1;//这里有问题直接使用i=e.item.ItemIndex+(DGProList.PageSize*DGProList.CurrentPageIndex)
???你的是日文的?
i只是你当前页的计数器,当转到第三页的时候在dataset里面i不再代表当前行数啦...
再说 postback一次,你页面的变量都是重新实例化的.
不会每次提交i都会在原来的基础上自加的
页面加载->(保存并有一个i)->点击第二页-->激发分页事件->(绑定数据)->激发ItemDataBound事件->页面重新加载变量刷新->(i重新为0)->点击第三次分页按钮(无论是第几页)(这时显示的是第一页的数据)->重复