就是点击分页,页面回传后,不是先执行Page_Load事件,而是先执行OnItemCreated 事件对应的代码,然后Page_Load事件,再执行一遍OnPageIndexChanged事件对应的代码,最后再执行一遍OnItemCreated 事件对应的代码。
解决方案 »
- 如何知道asp.net网页中的textbox控件中的值已改变
- 求更新SQL语句
- 如何做网站的链接转身功能?
- 快来救命,100分求助!有关MDAC的问题!给源码再加100分!
- 一个简单的难题,定义一个DataTable,向其中添加新的DataRow,之后邦定dataGrid
- 数组
- ************有点难度问题,高手请进***********
- 在VS2005Bate1中,GridView修改数据后不能保存
- 关于用户输入HTML的问题!
- 如何将B/S架构的软件,做成一个具有安装包的软件,像C/S架构一样,带有安装包程序,可以点击下一步..完成安装
- 为什么asp.net 2.0 中treeview在本机运行正常,可在服务器上运后就只有一排排文字,没有树状效果!
- 怎么在SQL SERVER数据库中读取图片文件并显示在GRIDVIEW里?
Page_Load
if(!IsPostBack)
{
//你的代码
}
1、我第一次(!IsPostBack为true)不执行查询的数据绑定到datagrid上。
2、页面上有textbox button,我根据textbox内容,单击button执行查询,数据绑定到datagrid上。
3、查询结果,datagrid上分页,我单击其中某一分页,执行OnPageIndexChanged事件时,就出现上面的情况。
============
想datagrid分页仍然显示 查询后的结果就应该 再帮定方法里面做控制 思路如下:
void bind()
{
if 查询了
sql = "... where =.."
else
sql = ".." 绑定datagrid
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Data.SqlClient;public partial class InforAdmin_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("p");
}
protected void PageChanged(object Sender, DataGridPageChangedEventArgs e)
{
UserInforDataGrid.CurrentPageIndex = e.NewPageIndex;
DataBindGrid();
}
/// <summary>
/// 数据绑定
/// </summary>
private void DataBindGrid()
{
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlServerConn"].ConnectionString);
conn.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter(ViewState["sql"].ToString(), conn);
dataAdapter.Fill(ds, "InforView");
UserInforDataGrid.DataSource = ds.Tables["InforView"].DefaultView;
ViewState["rowCount"] = ds.Tables["InforView"].Rows.Count;
UserInforDataGrid.DataBind();
conn.Close();
}
/// <summary>
/// 编辑分页样式
/// </summary>
protected void ItemCreated(object sender, DataGridItemEventArgs e)
{
Response.Write("d");
ListItemType type = e.Item.ItemType;
if (type == ListItemType.Pager)
{ }
}
protected void SelectUserInfor(object sender, EventArgs e)
{
UserInforDataGrid.CurrentPageIndex = 0;
if (!DateTextBox.Text.Equals(""))
{
ViewState["sql"] = "select * from InforView where AddDate = '" + DateTextBox.Text + "'";
}
DataBindGrid();
}
}
):
1、载入是输出:p;
2、文本框输入查询“日期”,单击"查询"按钮,
输出:一个p,几个d;
3、再次单击查询或进入查询结果某一分页,就会出现几个d,一个p,再几个d;我visual studio 2005调试模式下,也是这样,结论:(3)时, protected void ItemCreated(object sender, DataGridItemEventArgs e)
先执行,然后再执行protected void Page_Load(object sender, EventArgs e)
最后在执行一遍protected void ItemCreated(object sender, DataGridItemEventArgs e)通过调试,我发现第一次执行protected void ItemCreated(object sender, DataGridItemEventArgs e),是第一次绑定的又一次执行。