100分请教GridView分页问题
我在前台页面上添加了一个GridView,设置如下:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="no" Width="95%" CellPadding="4" ForeColor="#333333" BorderStyle="Solid" BorderWidth="3px" OnPageIndexChanged="GridView1_PageIndexChanging" PageSize="12" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" AllowPaging="True">
后台分页代码如下:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
this.GridView1.DataBind();
}
GridView1的数据源一个DataTable,而不是采用sqlDataSource,GridView1的数据源是在Page_Load中绑定的,前台页面如果不加“OnSelectedIndexChanged="GridView1_SelectedIndexChanged"”可以正常显示数据,加上“OnSelectedIndexChanged="GridView1_SelectedIndexChanged"”之后提示:
“No overload for 'GridView1_PageIndexChanging' matches delegate 'System.EventHandler'”
我主要是想让GridView实现分页功能。
请各位大虾帮忙看看,怎么解决?
------解决方案--------------------要实现GrdView分页的功能。
操作如下:
1、更改GrdView控件的AllowPaging属性为true。
2、更改GrdView控件的PageSize属性为 任意数值(默认为10)
3、更改GrdView控件的PageSetting- >Mode为Numeric等(默认为Numeric)该属性为分页样式。
GridView属性设置好了,从页面上也能看到分页样式。
现在开始实现分页的功能:
1、在 < <asp:GridView ID=...... >后添加,OnPageIndexChanging="GridView1_PageIndexChanging"
2、在对应的aspx.cs中添加:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
InitPage(); //重新绑定GridView数据的函数
}
3、
GridView1.PageIndex = e.NewPageIndex;
完了之后再重新绑定一下GridView。
------解决方案--------------------PageIndexChanging对应后台事件是
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
}
其第二个参数类型是GridViewPageEventArgs
PageIndexChanged对应后台事件是
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
}
其第二个参数类型是EventArgs
而你给的OnPageIndexChanged="GridView1_PageIndexChanging"
用的是OnPageIndexChanged事件却匹配了PageIndexChanging的delegate
当然错了
------解决方案-------------------- protected void Page_Load(object sender, EventArgs e)
{
string sql = "...";
......
this.GridView1.DataSource = ...
this.GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
this.GridView1.DataBind();
}
------解决方案--------------------你在Page_Load绑定的时候是否设置了
if(!this.isPostBack)
{
绑定你的数据源
}
------解决方案--------------------呵呵,LS这么多人说了,我就祝LZ好运了