日期:2014-05-18  浏览次数:20408 次

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好运了