我正在使用C#,.NET 3.5。我有一个动态绑定DataSource的GridView控件,我在Page_Load事件处理程序中动态设置PageSize。我在控件上设置了AllowPaging = true。 GridView分页工作正常,但Page_Load中设置的pagesize在第一次加载页面时不会生效。第一次加载页面时,它将始终显示10行,而不管我设置的GridView.PageSize属性(5,15等)。在第一次(页面回发)之后,页面大小生效,一切都按预期工作。
页面大小是我从appsettings下的web.Config文件中获取的母版页的属性。
我不确定为什么gridView的pagesize在第一次没有生效。我应该在Page_Load以外的其他事件中设置pagesize。此外,我总是设置它,即使它是一个回发。我正在使用内部Web服务器运行该页面。有什么想法发生了吗?
后面的代码(在aspx页面上GridView1.AllowPaging = true):
protected void Page_Load(object sender, System.EventArgs e)
{
DataView dvMembers = GetMembers;
GridView1.DataSource = dvMembers;
GridView1.PageSize = Master.GridViewSize;
}
母版页属性:
public int GridViewSize
{
get { return Convert.ToInt32
(ConfigurationManager.AppSettings ["memberDataGridPageSize"]); }
}
答案 0 :(得分:2)
在母版页的PageLoad事件之前调用子页面的PageLoad事件。因此,如果您在母版页面PageLoad事件中设置Master.GridViewSize
,则在第二个PostBack之前不会设置它。
最好在页面生命周期的早期加载GridViewSize,然后将其存储在会话中。
答案 1 :(得分:0)
在您的分页定义中,GridView是在第一个数据绑定时设置的,但如果发生回发则不在秒中。(默认情况下没有分页) 您需要在aspx页面上为GridView设置分页。
试试这个
<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>
另请注意,如果您正在运行ASP.NET 3.5项目,则可以使用DataPager
控件扩展GridView,Matt Berseth开发了一个示例here。
答案 2 :(得分:0)
设置Pagesize后缺少PageBind方法。添加它和它的一切工作正常。 我在设置PageSize之前绑定了控件,我猜这个值在第一次被保存后被用于Postback,但不是第一次。
感谢Jason Berkan指出这一点。