C# GridView.PageSize在第一次页面加载时设置为默认值10
我正在使用C#,.NET3.5。我有一个带有动态绑定数据源的GridView控件,并在Page_Load事件处理程序中动态设置PageSize。我已在控件上设置AllowPaging=true。 GridView分页工作正常,但是Page_Load中设置的pagesize在页面第一次加载时不会生效。第一次加载页面时,无论我设置了GridView.PageSize属性(5、15等),它都将始终显示10行。第一次(页面回发)后,页面大小生效,一切正常 页面大小是从appsettings下的web.Config文件获取的母版页的属性 我不知道为什么gridView的页面大小第一次没有生效。我是否应该在页面加载以外的其他事件中设置页面大小。而且,我总是设置它,即使它是回发。我正在使用内部web服务器运行该页面。知道发生了什么事吗 代码隐藏(aspx页面上的GridView1.AllowPaging=true): 母版页属性:C# GridView.PageSize在第一次页面加载时设置为默认值10,c#,asp.net,gridview,pageload,C#,Asp.net,Gridview,Pageload,我正在使用C#,.NET3.5。我有一个带有动态绑定数据源的GridView控件,并在Page_Load事件处理程序中动态设置PageSize。我已在控件上设置AllowPaging=true。 GridView分页工作正常,但是Page_Load中设置的pagesize在页面第一次加载时不会生效。第一次加载页面时,无论我设置了GridView.PageSize属性(5、15等),它都将始终显示10行。第一次(页面回发)后,页面大小生效,一切正常 页面大小是从appsettings下的web.C
public int GridViewSize
{
get { return Convert.ToInt32
(ConfigurationManager.AppSettings ["memberDataGridPageSize"]); }
}
在母版页的PageLoad事件之前调用子页的PageLoad事件。因此,如果在母版页PageLoad事件中设置
Master.GridViewSize
,则在第二次回发之前不会设置
最好在页面生命周期的早期加载GridViewSize,然后将其存储在会话中。在您的页面定义中,GridView在第一次数据绑定时设置,但如果发生回发,则不会在第二次数据绑定时设置。(默认情况下,没有页面) 您需要在aspx页面上为GridView设置分页 像这样试试
<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>
在设置页面大小后缺少PageBind方法。加上这些,一切都很好。
我在设置PageSize之前绑定了控件,我猜该值是在第一次之后保存的,并在随后的回发中使用,但不是第一次
感谢Jason Berkan指出这一点。Master.GridViewSize是母版页的属性,不在页面加载事件中设置。当我调试内容页以在page_Load事件处理程序中查看其值时,它已经设置好了。所以我认为这不是问题所在。您认为我应该在什么情况下设置网格页面大小?如果该值是第一次设置的,那么这不是问题所在。如果硬编码PageSize会发生什么?另外,对GridView1.DataBind()或Page.DataBind()的调用在哪里?嗨,Jason,GridViewBind发生在GetMembers方法内部,然后根据一些逻辑设置PageSize。在设置页面大小及其工作状态后,我现在调用Page.DataBind()。谢谢你的帮助。我正在页面加载事件处理程序中设置页面大小和数据源,不管它是否是回发。所以我不知道为什么第一次和回发之间会有不同。感谢您建议在ASPX代码中插入pagesize,但我希望在代码中设置pagesize时了解当前代码的情况。请随意接受此答案,以便以后搜索此问题的人可以轻松找到答案。
<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>