asp.net GridView 绑定与删除时分页冲突

问题描述 投票:0回答:1

我有一个带有 ObjectDataSource 的 Gridview :

<asp:GridView ID="gvCompany" runat="server" SkinID="BasicGridView" DataSourceID="odsCompany" DataKeyNames="ID" OnRowCommand="gvCompany_RowCommand" OnRowDataBound="gvCompany_RowDataBound">
                                    <Columns>
                                        <asp:TemplateField HeaderText="<%$ Resources:Titles, Select %>">
                                            <ItemTemplate>
                                                <asp:CheckBox ID="chbSelect" TabIndex="5" runat="server" CssClass="contrast-checkbox" />
                                            </ItemTemplate>
                                            <ItemStyle Width="50px" HorizontalAlign="Center" CssClass="center" />
                                            <HeaderStyle CssClass="center" />
                                        </asp:TemplateField>
                                        <asp:BoundField HeaderText="<%$ Resources:Titles,Code %>" DataField="Code" SortExpression="Code">
                                            <ItemStyle Width="10%" />
                                        </asp:BoundField>
                                        <asp:BoundField HeaderText="<%$ Resources:Titles,Name %>" DataField="Name" SortExpression="Name">
                                            <ItemStyle Width="70%" />
                                        </asp:BoundField>
                                        <asp:TemplateField HeaderText="<%$ Resources:Titles, Edit %>">
                                            <ItemTemplate>
                                                <asp:LinkButton ID="lbtnEdit" TabIndex="7" runat="server" CommandName="EditCompany" CommandArgument='<%# ((GridViewRow)Container).RowIndex %>' CssClass="btn btn-contrast btn-xs edit-grid">
                                                <i class="icon icon-edit"></i>
                                                </asp:LinkButton>
                                            </ItemTemplate>
                                            <ItemStyle Width="20px" HorizontalAlign="Center" CssClass="center" />
                                            <HeaderStyle CssClass="center" />
                                        </asp:TemplateField>
                                        <asp:TemplateField HeaderText="<%$ Resources:Titles, Delete %>">
                                            <ItemTemplate>
                                                <a id="IbtnDelete" tabindex="8" class="btn btn-danger btn-xs edit-grid" onclick="return SetItemForDelete(this);"><i class="icon icon-trash-o"></i></a>
                                            </ItemTemplate>
                                            <ItemStyle Width="20px" HorizontalAlign="Center" CssClass="center" />
                                            <HeaderStyle CssClass="center" />
                                        </asp:TemplateField>
                                    </Columns>
                                    <EmptyDataTemplate>
                                        <%= Resources.Messages.NoCompanyIsForView%>
                                    </EmptyDataTemplate>
                                </asp:GridView>
                                <asp:ObjectDataSource ID="odsCompany" runat="server" EnablePaging="true" TypeName="DMS.Data.CompanyProvider" SelectMethod="Search" SortParameterName="orderby" SelectCountMethod="GetSearchCount" />

当我转到 GridView 中的页面并删除该页面的所有行时,出现问题,在这种情况下,我绑定 Gridview 但显示 EmptyDataTemplate,而不是转到具有某些行的另一行..

如何解决这个问题?

c# asp.net gridview pagination objectdatasource
1个回答
1
投票

您将需要更改网格的 PageIndex 属性,因为它在重新绑定时不会自动更改。您可以在此处找到有关 PageIndex 属性的更多信息:http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.gridview.pageindex(v=vs.110).aspx

在重新绑定之前,在您的方法/事件中重置页面索引,如下所示:

if (gridView.PageIndex >= 1)
    gridView.PageIndex--;

如果您的页面索引为 0,那么您想显示 EmptyDataTable。

更新答案: 检查 Gridview 的 Rows.Count ,仅当当前页面索引中存在一行时才更改页面索引:

if (gridView.PageIndex >= 1 && gridView.Rows.Count==1)
    gridView.PageIndex--;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.