参考书本上写了一个小程序,实现数据绑定。
用GridView控件来实现数据的显示,结果点击
“下一页”的时候出现error:
GridView“GridView1”激发了未处理的事件“PageIndexChanging
代码如下:
[code]
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView1.PageIndex = e.NewSelectedIndex;
BindGrid();//已经在上面实现
}
[/code]何解???
用GridView控件来实现数据的显示,结果点击
“下一页”的时候出现error:
GridView“GridView1”激发了未处理的事件“PageIndexChanging
代码如下:
[code]
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView1.PageIndex = e.NewSelectedIndex;
BindGrid();//已经在上面实现
}
[/code]何解???
解决方案 »
- 关于 iframe 导入页面的问题
- gridview 显示隐藏层的问题
- asp.net多个用户登录同时后用记信息互窜,如何解决?
- 动态创建的GridView分页的问题
- 关于联合记录查询的请教
- 向大家推荐一个工具XML Visualizer for Visual Studio .NET 2003,可在调试时查看dataset、datatable、datarow的内容.
- 简单问题,谢谢
- 请问一下,学习asp.net是不是一定要从asp开始学习
- 一个treeview问题
- 谁知道用代码在treeview web控件中,添加node的方法?
- 请大家帮忙看看这种页面是怎么实现的。
- C#中,此种正则表达式如何填写?
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void bind()
{
SqlConnection cn = new SqlConnection("server=.;database=pubs;uid=sa;pwd=sa");
cn.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cn);
DataSet ds = new DataSet();
da.Fill(ds);
cn.Close();
GridView1.DataSource = ds;
GridView1.AllowPaging = true;
GridView1.PageSize = 5;
GridView1.DataBind();
if (GridView1.PageIndex == 0)
{
Button1.Enabled = false;
Button2.Enabled = false;
}
else
{
Button1.Enabled = true;
Button2.Enabled = true;
}
if (GridView1.PageIndex == GridView1.PageCount - 1)
{
Button3.Enabled = false;
Button4.Enabled = false;
}
else
{
Button3.Enabled = true;
Button4.Enabled = true;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.PageIndex = 0;
bind();
}
protected void Button3_Click(object sender, EventArgs e)
{
GridView1.PageIndex = GridView1.PageIndex + 1;
bind();
}
protected void Button4_Click(object sender, EventArgs e)
{
GridView1.PageIndex = GridView1.PageCount - 1;
bind();
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.PageIndex = GridView1.PageIndex - 1;
bind();
}
}
还是分页控件比较好AspnetPager1 存储过程
CREATE PROCEDURE Pagination
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@doType bit=0,--执行的类型1取记录的行数,否取记录集
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = ''-- 查询条件 (注意: 不要加 where)
AS
SET NOCOUNT ON
declare @strSQL nvarchar(4000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doType=1--取记录的行数
begin
if @strWhere !=''
set @strSQL = 'select count(*) from ' + @tblName + ' where '+@strWhere
else
set @strSQL ='select count(*) from ' + @tblName + ''
--EXEC SP_EXECUTESQL @strSQL,N'@TotalRecordCount int output',@TotalRecordCount output
end
else--取记录集
begin
if @OrderType != 0
begin
set @strTmp = "<(select min"
set @strOrder = " order by " + @fldName +" desc"
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by " + @fldName +" asc"
--如果@OrderType是0,就执行升序,这句很重要!
end
if @PageIndex = 1--如果当前页是第一页就执行以上代码,这样会加快执行速度
begin
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from " + @tblName + " where " + @strWhere + " " + @strOrder
else
set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from "+ @tblName + " "+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from "
+ @tblName + " where " + @fldName + "" + @strTmp + "("+ @fldName + ") from (select top " + str((@PageIndex-1)*@PageSize) + " "+ @fldName + " from " + @tblName + "" + @strOrder + ") as tblTmp)"+ @strOrder
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from "
+ @tblName + " where " + @fldName + " " + @strTmp + "("
+ @fldName + ") from (select top " + str((@PageIndex-1)*@PageSize) + " "
+ @fldName + " from " + @tblName + " where " + @strWhere + " "
+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder
end
end
exec (@strSQL)GO
DAL层代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Marlboro.Model;namespace Marlboro.DAL
{
public class SQLProPage
{
public SQLProPage()
{
} /// <summary>
/// 取记录数
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static int iRecordCount(page_model model)
{
string CommanText = "Pagination";
SqlParameter[] para = new SqlParameter[] {
new SqlParameter("@tblName", model.TblName),
new SqlParameter("@strGetFields", model.StrGetFields),
new SqlParameter("@fldName", model.FldName),
new SqlParameter("@doType", 1),
new SqlParameter("@PageSize", 1),
new SqlParameter("@PageIndex", 1),
new SqlParameter("@OrderType", 0),
new SqlParameter("@strWhere", model.StrWhere)
};
return Marlboro.Common.SqlHelper.SqlHelper.ExecuteScalar(CommanText, para, CommandType.StoredProcedure);
}
/// <summary>
/// 返回数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static DataSet getDataSet(page_model model)
{
string CommanText = "Pagination";
SqlParameter[] para = new SqlParameter[] {
new SqlParameter("@tblName", model.TblName),
new SqlParameter("@strGetFields", model.StrGetFields),
new SqlParameter("@fldName", model.FldName),
new SqlParameter("@doType", model.DoType),
new SqlParameter("@PageSize", model.PageSize),
new SqlParameter("@PageIndex", model.PageIndex),
new SqlParameter("@OrderType", model.OrderType),
new SqlParameter("@strWhere", model.StrWhere)
};
return Marlboro.Common.SqlHelper.SqlHelper.ReturnDataSet(CommanText, CommandType.StoredProcedure, para);
}
}
}BLL
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Marlboro.Model;
using System.Data.SqlClient;
namespace Marlboro.BLL
{
public class T_SQLProPage
{
/// <summary>
/// 取记录数
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static int iRecordCount(page_model model)
{
return Marlboro.DAL.SQLProPage.iRecordCount(model);
} /// <summary>
/// 返回数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static DataSet getDataSet(page_model model)
{
return Marlboro.DAL.SQLProPage.getDataSet(model);
} }
}WEBusing 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 Marlboro.Model;public partial class Wage_search : System.Web.UI.Page
{
//声明实体
Marlboro.Model.page_model model = new page_model();
protected void Page_Load(object sender, EventArgs e)
{
//加载实体
model.TblName = "V_WAGE";
model.StrGetFields = "*";
model.FldID = "STAFFID";
model.StrWhere = "1=1";
model.PageSize = Pager.PageSize;
model.FldName = "STAFFID";//[MONTH]
model.OrderType = 1;
if (!IsPostBack)
{
BindData(model);
//Gvbind();
}
}
protected void btnsearch_Click(object sender, EventArgs e)
{
string SearchTime = Convert.ToDateTime(Calendar1.Text.Trim()).ToShortDateString().ToString();
string Searchddl = Dr_Search.SelectedValue.ToString();
string Searchtxt = txtsearch.Text.Trim();
DataTable dt = new DataTable();
dt = new Marlboro.BLL.T_wage().ReturnWageViewbyWhere(Searchddl, SearchTime, Searchtxt);
if (dt.Rows.Count != 0)
{
Marlboro.Common.ControlHelper.ControlHelper.GridViewBind(this.GridView1, dt);
}
else
{
Marlboro.Common.WebHelper.MessageBox.Show("没数据");
BindData(model);
} }
void Gvbind()
{
Marlboro.Common.ControlHelper.ControlHelper.GridViewBind(GridView1, new Marlboro.BLL.T_wage().WageView());
} void BindData(page_model model)
{
//返回数
Pager.RecordCount = Marlboro.BLL.T_SQLProPage.iRecordCount(model);
if (Pager.CurrentPageIndex <= 0)
{
model.PageIndex = 1;
}
else
{
model.PageIndex = Pager.CurrentPageIndex;
}
//返回数据
DataTable ds = Marlboro.BLL.T_SQLProPage.getDataSet(model).Tables[0];
//绑定
Marlboro.Common.ControlHelper.ControlHelper.GridViewBind(GridView1, ds);
} protected void Pager_PageChanged(object sender, EventArgs e)
{
BindData(model);
}
}
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView1.PageIndex = e.NewSelectedIndex;
BindGrid();
}是这样做的啊。IHander的意思应该是这样吧。。还是不行啊。
好糗
原来是我的函数名搞错了
搞成SelectIndexChanging了
丢人了。哈哈、。。