[英]Refresh DataPager after an item in ListView is deleted
I have a ListView
table in my asp.net page. 我的asp.net页上有一个ListView
表。 Against each row there is delete button. 每行上都有删除按钮。 on clicking the button the corresponding item will be deleted. 点击按钮,相应的项目将被删除。
I have done all these. 我已经做了所有这些。 Also to refresh the data after an item is deleted. 还可以在删除项目后刷新数据。
Here is my code: 这是我的代码:
aspx 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# 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();
}
After deleting the an item, the data is updated by calling BindListView();
删除项目后,通过调用BindListView();
更新数据BindListView();
again. 再次。 It works perfectly. 它运作完美。
My problem is When there exists only one item in the last page and it is deleted, The DataPager
doesn't go to the previous page. 我的问题是,当最后一页中只有一个项目被删除时, DataPager
不会转到上一页。 Instead it stays in the same page with no data, even no table. 相反,它停留在同一页面,没有数据,甚至没有表格。
How to refresh DataPager and go to prev page after the last item in the current page is deleted ? 当前页面的最后一项删除后,如何刷新DataPager并转到上一页?
use this after your page load event
protected void Page_LoadComplete(object sender, EventArgs e)
{
// BindListView();
}
this will work 这会工作
Try handling the deleted event and bind the data source from within the deleted event. 尝试处理已删除事件,并从已删除事件中绑定数据源。
<asp:ListView ID="lv1" runat="server" OnItemDeleted="lv1_ItemDeleted"></asp:ListView>
protected void lv1_ItemDeleted(object sender, ListViewDeletedEventArgs e)
{
BindListView();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.