C# 分页中 CodeBehind 的 GridView 不起作用
Posted
技术标签:
【中文标题】C# 分页中 CodeBehind 的 GridView 不起作用【英文标题】:GridView from CodeBehind in C# Paging not working 【发布时间】:2011-07-10 15:01:27 【问题描述】:当我单击 GridView 上的 > 时,它不会转到下一组记录。
DataGrid dataGrid = new DataGrid();
dataGrid.PageSize = 5;
dataGrid.AllowPaging = true;
dataGrid.EnableViewState = true;
dataGrid.DataSource = customerDataTable;
dataGrid.AllowPaging ();
if (!IsPostBack)
dataGrid.DataBind();
根据我的代码,它要么停留在前 5 个,要么不显示网格。
我已经尝试过在 IsPostBack 内外使用 DataBind()。
我也试过添加
dataGrid.PageIndexChanged += new DataGridPageChangedEventHandler(dataGrid_PageIndexChanged);
和
void dataGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
DataGrid dg = (DataGrid)source;
dg.DataBind();
但我无法让它工作。我做错了什么?
谢谢!
【问题讨论】:
【参考方案1】:这是一个示例,我尝试重新创建您的场景并且它有效。看看吧。
protected void Page_Load(object sender, EventArgs e)
GridView GridView1 = new GridView();
Panel1.Controls.Add(GridView1);
GridView1.DataSource = GetList();
GridView1.AutoGenerateColumns = true;
GridView1.EnableViewState = true;
GridView1.AllowPaging = true;
GridView1.PageSize = 4;
GridView1.DataBind();
GridView1.PageIndexChanging += new GridViewPageEventHandler(GridView1_PageIndexChanging);
void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
if (sender != null)
GridView GridView1 = sender as GridView;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
public class Person
public String Name get; set;
public int Age get; set;
private IEnumerable<Person> GetList()
List<Person> list = new List<Person>();
list.Add(new Person() Age = 12, Name = "asdfsd");
list.Add(new Person() Age = 13, Name = "sdfsdaf");
list.Add(new Person() Age = 14, Name = "zxczxv");
list.Add(new Person() Age = 15, Name = "zxczxv" );
list.Add(new Person() Age = 16, Name = "zxczxv" );
list.Add(new Person() Age = 17, Name = "zxczxv" );
return list;
在标记中你只需要拥有面板
<asp:Panel ID="Panel1" runat="server">
编辑:
这是使用 DataGrid 的相同场景
protected void Page_Load(object sender, EventArgs e)
DataGrid dataGrid = new DataGrid();
Panel1.Controls.Add(dataGrid);
dataGrid.DataSource = GetList();
dataGrid.AutoGenerateColumns = true;
dataGrid.EnableViewState = true;
dataGrid.AllowPaging = true;
dataGrid.PageSize = 4;
dataGrid.DataBind();
dataGrid.PageIndexChanged +=new DataGridPageChangedEventHandler(dataGrid_PageIndexChanged);
void dataGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
if (source != null)
DataGrid dataGrid = source as DataGrid;
dataGrid.CurrentPageIndex = e.NewPageIndex;
dataGrid.DataBind();
【讨论】:
我明白了,“System.Web.UI.WebControls.DataGrid”不包含“PageIndex”的定义 @user390480 用于 DataGrid,请尝试使用dataGrid.CurrentPageIndex
好的,越来越近了。我可以前进,但不能后退。我没有 PageIndexChanging 事件。我只有一个 PageIndexChanged。
@user390480 PageIndexChanged 应该没问题。我尝试使用 DataGrid 而不是 GridView,我可以前进和后退。
好吧,由于某种原因,当我点击
以上是关于C# 分页中 CodeBehind 的 GridView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
C# 文件(CodeBehind 类)从 Visual Studio 中的项目中消失 - Xamarin