【问题标题】:Cant get ListView to refresh on postback无法让 ListView 在回发时刷新
【发布时间】:2015-01-20 19:41:49
【问题描述】:

我有一个非常简单的带有 listview 的 asp.net webform 页面,只有在我发出新请求时,我才能使 listView 在回发时刷新。我猜 listView 从视图状态或其他东西中获取它的内容。我在 Page_Load 事件中进行了数据绑定,并且我也尝试了 Page_Init 事件。没有区别。

我可能已经浏览了前 50 个 Google 搜索结果,但似乎没有任何效果。

如何强制列表视图在回发时刷新?

默认.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RSS_Reader.Default" %>
<%@ Import namespace="RSS_Reader.Extensions" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>RSS Reader</title>
    <link rel="shortcut icon" href="favicon.ico" />
    <link href="css/main.css" rel="stylesheet" />
    <script src="js/jquery-1.11.2.min.js"></script>
    <script type="text/javascript" src="js/App.js"></script>
</head>
<body>
<form id="form1" runat="server">
    <div>
        <div id="horizontal-menu">
            <ul id="horizontal-menu-list">
                <li id="add-feed">Add Feed
                    <ul>
                        <li>
                            <input type="text" placeholder="Feed URL" /><button class="button green">Add</button>
                        </li>
                    </ul>
                </li>
                <li>Add Group</li>
                <li>Settings</li>
            </ul>
            <div id="global-search">
                <input type="text" id="search" placeholder="Search" />
            </div>
            <div style="clear: both"></div>
        </div>
        <div id="feeds">
            <div id="feed-filter">
                <asp:TextBox ID="feedUrl" runat="server" placeholder="Feed URL"></asp:TextBox>
                <asp:Button ID="ThisIsAUniqueNameForAButton" runat="server" CssClass="button green" Text="Subscribe" OnClick="subscribeToFeed" />
            </div>

            <div id="feed-wrapper">

                <asp:ListView ID="FeedCollection" runat="server">
                    <ItemTemplate>
                        <div><div class="feed-collection-icon"></div><asp:Label runat="server" ID="listFeedTitle" Text='<%# Bind("Title") %>'></asp:Label></div>
                    </ItemTemplate>
                </asp:ListView>

            </div>

        </div>
        <div id="content">

            <div id="feed-title">Version2 - IT For Professionelle</div>
            <div id="nodes">

                <asp:GridView ID="nodesGridview" OnSorting="nodesGridview_Sorting" runat="server" OnSortCommand="SortGrid" AllowSorting="True" AutoGenerateColumns="false">
                    <EmptyDataTemplate>
                        No feed.
                    </EmptyDataTemplate>
                    <Columns>
                        <asp:TemplateField HeaderText="Title" SortExpression="title">
                            <ItemTemplate>
                                <div class="node-icon"></div> <%# XPath("title") %>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Description" SortExpression="description">
                            <ItemTemplate>
                                <%# XPath("description").ToString().Truncate(50) %>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Date" SortExpression="pubDate">
                            <ItemTemplate>
                                <%# XPath("pubDate").ToString().toDate() %>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

            </div>
            <div id="reading-pane">
                <asp:Label ID="readingPaneTitle" runat="server" Text="Label"></asp:Label>

            </div>

        </div>
        <div id="footer">
            Copyright &copy; 2014 - Mads O. Nielsen
        </div>
    </div>
</form>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Diagnostics;
using System.Data.Entity;
using System.Data;
using System.IO;

using RSS_Reader.FeedCollection;
using RSS_Reader.FeedItem;


namespace RSS_Reader
{
    public partial class Default : System.Web.UI.Page
    {
    private XmlDataSource feedItems;
    private FeedReader feedReader; 

    protected void Page_Init(object sender, EventArgs e)
    {
        Debug.WriteLine("Page_Init");

        if (!IsPostBack)
        {

        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        RSS_Reader.Model db = new RSS_Reader.Model();

        //var feedQuery = from emp in db.Feeds select emp;
        //List<Feeds> empList = feedQuery.ToList();

        FeedCollection.DataSource = db.Feeds.ToList();

        feedReader = new FeedReader();
        feedReader.load("http://www.version2.dk/it-nyheder/rss");

        feedItems = new XmlDataSource();
        feedItems.EnableCaching = false;
        feedItems.ID = "feedItems";
        feedItems.Data = feedReader.feed.OuterXml;
        feedItems.XPath = "rss/channel/item";

        nodesGridview.Width = new Unit(100.00, UnitType.Percentage);
        nodesGridview.DataSource = feedItems;

        FeedCollection.DataBind();
        nodesGridview.DataBind();

    }

    protected void subscribeToFeed(object sender, EventArgs e)
    {
        FeedManager feedManager = new FeedManager();
        feedManager.subscribe(feedUrl.Text);
    }

    protected void nodesGridview_Sorting(object sender, GridViewSortEventArgs e)
    {
        Debug.WriteLine("Sorting");

    }

    }
}

【问题讨论】:

    标签: c# entity-framework listview


    【解决方案1】:

    如果由于将 ListView 保存到 ViewState 中而无法刷新,您可以将 EnableViewState 属性设置为 False,然后服务器在所有回发中刷新它

    【讨论】:

    • 我不想禁用视图状态,这不是正确的解决方案。
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多