Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView.PageSize在第一次页面加载时设置为默认值10_C#_Asp.net_Gridview_Pageload - Fatal编程技术网

C# GridView.PageSize在第一次页面加载时设置为默认值10

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

我正在使用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):

母版页属性:

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 %>' ..>