我有一个默认分页的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的任何想法?
答案 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;
现在,我们正在用煤气烹饪!!
感谢您的帮助。