ASP.Net Gridview.Rows.Count给出了错误的计数

时间:2015-05-21 20:37:14

标签: c# asp.net gridview pagination

我有一个默认分页的Gridview(BudgetGridView),每页30行。每年一次,此gridview中的数据会更新。为了实现这一点,我使用在网上找到的一些非常灵活的代码(http://highoncoding.com/)启用了对此gridview的所有行的编辑。作为编辑过程的一部分,我禁用分页,以便用户可以轻松编辑和滚动整个gridview,直到它们到达底部并将所有编辑保存在一个动作中。这种分页禁用发生在这里:

        if (myLabel == "  Edit All  ")
        {
            isEditMode = true;
            BudgetGridView.AllowPaging = false;
            EditAllButton.Text = "  Save Edits  ";
            BindBudgetGridView();
        }

此时gridview是完全可编辑的,它运行得很漂亮。当用户保存时,点击" else"在上面的代码中,我遇到了这个帖子主题的问题。这是其他的:

        else
        {
            isEditMode = false;
            EditAllButton.Text = "  Edit All  ";
            SaveData();  // Problem is here...
            BudgetGridView.AllowPaging = true;
            BindBudgetGridView();
        }

当对SaveData()进行上述调用时,它看起来像这样:

protected void SaveData()
    {
        // total count for an update loop
        int totalRowsCount = BudgetGridView.Rows.Count;

它不是返回正确的计数(大约250行)而是给我一个值30,这是分页值,但是分页被禁用。如果有帮助,这里是gridview的属性:

                <asp:GridView 
                    ID="BudgetGridView" runat="server"
                    HeaderStyle-ForeColor="#FFFFFF" 
                    ShowFooter="True" 
                    HeaderStyle-BackColor="#546E96"
                    FooterStyle-BackColor="#C3CFDD" 
                    AllowPaging="True" 
                    PageSize="30" 
                    OnPageIndexChanging="BudgetGridView_PageIndexChanging"
                    AlternatingRowStyle-BackColor="#FFFFCC"  
                    AutoGenerateColumns="False" 
                    DataKeyNames="KeyID"   
                    BackColor="White"
                    HorizontalAlign="Center" 
                    OnRowDeleting="BudgetGridView_RowDeleting"
                    EnableViewState="false">

有关为什么我的行数为30而不是满250的任何想法?

1 个答案:

答案 0 :(得分:0)

解决!!

解决方案是处理代码隐藏中的分页并将其从aspx中删除。只要它在aspx中属于GridView的属性,我在代码隐藏中所做的一切都没有任何效果。所以,我把aspx更改为:

                <asp:GridView 
                ID="BudgetGridView" runat="server"
                HeaderStyle-ForeColor="#FFFFFF" 
                ShowFooter="True" 
                HeaderStyle-BackColor="#546E96"
                FooterStyle-BackColor="#C3CFDD" 
                OnPageIndexChanging="BudgetGridView_PageIndexChanging"
                AlternatingRowStyle-BackColor="#FFFFCC"  
                AutoGenerateColumns="False" 
                DataKeyNames="KeyID"   
                BackColor="White"
                HorizontalAlign="Center" 
                OnRowDeleting="BudgetGridView_RowDeleting"
                EnableViewState="false">

...并将这些陈述放在我需要它们的代码隐藏中:

            //kill pagination
        BudgetGridView.AllowPaging = false;
        BudgetGridView.PageSize = 5000;

        //resurrect pagination
        BudgetGridView.AllowPaging = true;
        BudgetGridView.PageSize = 30;

现在,我们正在用煤气烹饪!!

感谢您的帮助。