简体   繁体   English

删除ListView中的项目后刷新DataPager

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM