【问题标题】:ASP .NET Datapager and datasourceASP .NET 数据分页器和数据源
【发布时间】:2013-06-19 13:07:13
【问题描述】:

datasourcelistview 发生变化时,我遇到了datapager 的问题。

例子:

<asp:TextBox ID="filter" runat="server" />
<asp:ListView ID="listview" DataSourceID="datasource" runat="server">
    <LayoutTemplate>
        ...
    </LayoutTemplate>
    <ItemTemplate>
        ...
    </ItemTemplate>
</asp:ListView>
<asp:DataPager ID="datapager" PagedControlID="listview" runat="server">
    <Fields>
        <asp:NumericPagerField />
    </Fields>
</asp:DataPager>
<asp:SqlDataSource ID="datasource" ConnectionString="..." PageSize="10"
                   SelectCommnad="SELECT * FROM [...] WHERE [...] LIKE @filter"
                   runat="server">
    <SelectParameters>
        <asp:ControlParameter Name="filter" ControlID="filter"
                              DbType="String" PropertyName="Text" />
    </SelectParameters>
</asp:SqlDataSource>

Listview 包含让我们说 100 records 没有 filterDatapager 根据pagesize 显示pagenumbers

现在如果我选择除1st 之外的任何页面,然后输入filter,它返回的页面少于当前选择的页面; datapager 停留在先前选择的页面上,listview 不显示任何记录,即使有一些记录。

知道为什么会这样吗?

【问题讨论】:

  • 尝试SetPageProperties if StartRowIndex > TotalRowCount 但它不起作用。不知道如何解决这个问题。

标签: asp.net listview sqldatasource datapager


【解决方案1】:

我想我明白了。经过几次尝试;这终于奏效了。

protected void filter_TextChanged(object sender, EventArgs e)
{
    this.dataPager.SetPageProperties(0, this.Invoices_DataPager.PageSize, false);
    this.listview.DataBind();
}

每次过滤器改变; datapager 设置为第一页。希望对遇到同样问题的人有所帮助。

【讨论】:

    【解决方案2】:

    好的,我遇到了同样的问题:

    将 AutoPostBack=true 与 OnTextChanged 一起添加到文本框 并 filter_TextChanged : SetPageProperties(0,PageSize,true)

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2010-12-12
      • 2012-03-12
      • 2018-09-12
      • 2010-11-23
      相关资源
      最近更新 更多