【问题标题】:Strange Pager behaviour in ListViewListView 中奇怪的寻呼机行为
【发布时间】:2009-04-05 13:10:06
【问题描述】:

我在页面上的 ListView 控件中有一个标准页面,并且寻呼机正在工作,但是为了移动到下一个项目列表,我需要在它实际移动到下一组项目之前单击两次寻呼机链接。

寻呼机的代码是:

 <asp:ListView ID="lv_LostCard" runat="server" DataKeyNames="request_id" EnableViewState="false">
        <LayoutTemplate>
               <table width="550" border="1" class="table">
                    <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                </table> 
                <asp:DataPager ID="lv_Books_Pager" runat="server" PageSize="10">
                    <Fields>
                        <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="true" ShowNextPageButton="false" />
                        <asp:NumericPagerField />
                        <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="false" ShowNextPageButton="true" ShowLastPageButton="false" />
                    </Fields>
                </asp:DataPager>
            </LayoutTemplate>
            <ItemTemplate>               
            </ItemTemplate>
    </asp:ListView>

后面的代码是:

protected void Page_Load(object sender, EventArgs e) { 如果(!Page.IsPostBack) { getLostCardsList(); } }

 protected void getLostCardsList()
    {
        using(LostCardsManagementDataContext LostCard = new LostCardsManagementDataContext())
        {
            var getLostCardsList = from lc in LostCard.lostcard_request_cards
                                   select lc;
            lv_LostCard.DataSource = getLostCardsList;
            lv_LostCard.DataBind();
        }

谁能告诉我发生了什么以及如何解决它?

提前致谢

【问题讨论】:

    标签: c# .net asp.net


    【解决方案1】:

    我真的对 listview 有问题。

    我找到了与您的问题相关的解决方案,似乎没有其他方法可以解决此问题。您需要调用 OnPreRender 方法将源重新绑定到 listview。

    protected void listview_PreRender(object sender, EventArgs e)
    {
        getLostCardsList();//your method for binding
    }
    

    请注意,在渲染页面之前调用 PreRender 事件。更清楚地说,如果您的页面有回发事件,则会再次渲染。这意味着您需要将数据存储到服务器集合中(即会话)。

    【讨论】:

      【解决方案2】:

      PagePropertiesChanged 事件中的 DataBind。

      private void listview_PagePropertiesChanged(object sender, System.EventArgs e)
      {
          listview.DataBind();
      }
      

      【讨论】:

        【解决方案3】:

        您是否在代码中绑定您的列表视图?确保您只在非回发时这样做。

        【讨论】:

        • 是的,在我的代码后面我有 if (!Page.IsPostBack),这真的让我发疯,我不知道为什么它会这样。
        【解决方案4】:

        您已关闭 ListView 上的视图状态。重新打开视图状态试试。

        【讨论】:

          猜你喜欢
          • 2012-11-24
          • 2017-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 2014-03-21
          相关资源
          最近更新 更多