首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView DataPager没有分页。

ListView DataPager没有分页。
EN

Stack Overflow用户
提问于 2012-07-11 00:34:45
回答 1查看 7.3K关注 0票数 0

ListView正在正常显示,DataPager在底部显示按钮,但当我单击NEXT按钮时,DataPager不会进入下一页数据。

ASPX页面:

代码语言:javascript
复制
    <div id="EventListing">
        <asp:ListView ID="ListEvents" runat="server">
            <LayoutTemplate> 
                <div ID="itemPlaceholder" runat="server">
                </div>
                <div id="pagerFormat">
                     <asp:DataPager ID="ListingDataPager" runat="server" PageSize="5" PagedControlID="ListEvents" QueryStringField="page" >
                        <Fields>
                            <asp:NextPreviousPagerField 
                            FirstPageText="First"
                            LastPageText="Last"
                            NextPageText="Next"
                            PreviousPageText="Back" />
                        </Fields>
                    </asp:DataPager>
                </div>
            </LayoutTemplate>

            <ItemTemplate>
                <table id="tblEvents">
                    <tr>
                        <td rowspan="4" id="Col1Events"></td>
                        <td rowspan="4" id="Col2Events"></td>
                        <td rowspan="4" id="Col3Events"></td>
                        <td class="tdEvents"><span style="font-weight:bold; font-size: 1em;"><%#Eval("EVENT_DATERANGE") %>:&nbsp;&nbsp;<%#Eval("EVENT_NAME") %></span></td>
                    </tr>
                    <tr>
                        <td class="tdEvents"> <span style="font-size: .9em;"><%#Eval("EVENT_DESC") %></span></td>
                    </tr>
                    <tr>
                        <td class="tdEvents"><span style="font-size: .9em;"><%#Eval("EVENT_STREET") %>, <%#Eval("CITY.CITY_NAME") %></span></td>
                    </tr>
                    <tr>
                        <td class="tdEvents"><span style="font-size: .9em;"><%#Eval("EVENT_PHONE") %></span></td>
                    </tr>
                    <tr>
                        <td colspan="4" id="tdEmpty"></td>
                    </tr>                
                </table>
            </ItemTemplate>
        </asp:ListView>        
    </div>

页面后面的代码:

代码语言:javascript
复制
        protected void btnFindEvents_Click(object sender, EventArgs e)
        {
            DateTime StartDt;
            string EventType = ddlEventType.SelectedValue;
            string dt = Request.Form["DatePickername"];
            if (ddlEventType.SelectedIndex == 0)
            {
                EventType = "";
            }
            if (dt != "")
            {
                StartDt = Convert.ToDateTime(Request.Form["DatePickerName"]);
            }
            else
            {
                StartDt = DateTime.Now;
            }
            string CityName= ddlEventCity.SelectedValue;
            if (ddlEventCity.SelectedIndex == 0)
            {
                CityName = "";
            }

            if ((ddlEventType.SelectedIndex == 0) && (ddlEventCity.SelectedIndex == 0))
            {
                //(1) ALL EVENTS
                BLgetEvents obj = new BLgetEvents();
                var EventList = obj.getAllEvents(StartDt);
                ListEvents.DataSource = EventList;
                ListEvents.DataBind();
            }
}
EN

回答 1

Stack Overflow用户

发布于 2012-07-11 01:40:44

当您通过ListView页面时,您必须再次绑定DataPager上的数据。因此,您需要在PagePropertiesChanging控件的ListView事件上实现此绑定。类似于:

代码语言:javascript
复制
// 1 - add a method to bind ListView, add some parameters if you need
protected void BindListView()
{
   var data = // get data from database

   ListEvents.DataSource = data;
   ListEvents.DataBind();
}

// 2 - call this method on the button
protected void btnFindEvents_Click(object sender, EventArgs e)
{
   BindListView();
}        

// 3 - call this method on the PagePropertiesChanging event of the ListView
protected void ListEvents_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
    //set current page startindex, max rows and rebind to false
    YourDataPagerControlId.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);

    //rebind List View
    BindListView();
}

在您的asp.net set表单上,您需要在listview标记上设置事件:

代码语言:javascript
复制
<asp:ListView ID="ListEvents" runat="server" OnPagePropertiesChanging="ListEvents_PagePropertiesChanging">
...
</asp:ListView>

当您从代码behine中设置数据源时,同样的原则也适用于其他数据库控件,如GridView、DataList、Repeater等(您需要在某些分页事件上再次绑定)。解决此问题的另一种方法是,可以添加数据源控件(如对象数据源、like数据源等)。并在ListView的DataSourceID属性上设置它,DataPager将自动工作。

有关更多细节,请参见以下链接:http://weblogs.asp.net/hajan/archive/2011/09/08/paging-listview-using-datapager-without-using-datasource-control.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11423943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档