【问题标题】:Refresh DataPager after an item in ListView is deleted删除 ListView 中的项目后刷新 DataPager
【发布时间】:2016-02-29 10:20:39
【问题描述】:

我的 asp.net 页面中有一个 ListView 表。针对每一行都有删除按钮。单击按钮时,相应的项目将被删除。

这些我都做了。还可以在删除项目后刷新数据。

这是我的代码:

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();更新数据。”。它更新数据。但是当最后一项被删除时,会显示一个没有数据的空白页面。
  • 如果你检测到你的表(DTable)是空的,你能重定向吗?

标签: c# asp.net listview datapager


【解决方案1】:
use this after your page load event

protected void Page_LoadComplete(object sender, EventArgs e)
{
  // BindListView();
}

这会起作用

【讨论】:

  • 请详细说明。
  • 这不起作用。能否请您详细解释一下。
【解决方案2】:

尝试处理已删除事件并从已删除事件中绑定数据源。

<asp:ListView ID="lv1" runat="server" OnItemDeleted="lv1_ItemDeleted"></asp:ListView>


protected void lv1_ItemDeleted(object sender, ListViewDeletedEventArgs e)
    {
        BindListView();
    }

【讨论】:

  • 这不起作用。能否请您详细解释一下。
  • 你有没有试过调试检查delete过程中是否调用了delete_event方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多