我在我的asp.net页面中有一个ListView
表。对每一行都有删除按钮。点击按钮时,相应的项目将被删除。在ListView中的项目被删除后刷新DataPager
我已经完成了所有这些。也可以在删除项目后刷新数据。
这里是我的代码:
ASPX
<asp:ListView ID="CategoriesList" runat="server" ItemPlaceholderID="PlaceHolder1" OnPagePropertiesChanging="OnPagePropertiesChanging">
<LayoutTemplate>
<table>
<tr><th>Header</th></tr>
<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>
</table>
<asp:DataPager ID="DataPager" runat="server" PagedControlID="CategoriesList" PageSize="3" QueryStringField="page">
<Fields>
//fields goes here
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<tr><td> //item goes here </td></tr>
</ItemTemplate>
</asp:ListView>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindListView();
}
}
private void BindListView()
{
// SQL connection string, command, etc to get the data from database
DataTable DTable = new DataTable();
SDAdapter.Fill(DTable);
CategoriesList.DataSource = DTable;
CategoriesList.DataBind();
}
protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
(CategoriesList.FindControl("DataPager") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
BindListView();
}
删除项目后,该数据被再次调用BindListView();
更新。它完美的作品。
我的问题是当最后一页只存在一个项目并且它被删除时,DataPager
不会转到上一页。相反,它保持在没有数据的同一页面中,甚至没有表格。
如何刷新DataPager并在当前页面的最后一项被删除后转到上一页?
最简单的解决方法是将召回BindListView()方法,删除 –
后,请仔细阅读问题_“删除项目后,该数据是通过调用BindListView()更新;再次” _。它更新数据。但是当最后一个项目被删除时,将显示一个没有数据的空白页面。 – Munawir
如果您检测到表(DTable)为空,您可以重定向吗? –