所以,我有一个事件在文本文件更新时总是被触发。这是事件处理程序:
private void FileWasChanged()
{
this.runsList.Items.Clear();
runningModels = RunsFile.ReadFile(Constants.active_runs_loc, Constants.run_file_name);
this.runsList.DataSource = runningModels;
this.runsList.DataBind();
this.updatePanel.Update();
}
在此方法中,我清除ListView(runsList),读取文件的内容,然后将新数据绑定到ListView。然后更新updatepanel。但这不会发生,页面保持静态,直到我按F5。这是布局:
<section>
<asp:ScriptManager ID="scriptManager1" runat="server" ></asp:ScriptManager>
<asp:UpdatePanel id="updatePanel" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ID="runsList" runat="server">
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="itemPlaceholder" runat="server" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<asp:Label Text="<%# Container.DataItem %>" runat="server" />
</li>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger controlid="runsList"/>
</Triggers>
</asp:UpdatePanel>
</section>
所以我试图从文本文件中为网站用户提供实时信息。例如,当我更改文本文件中的一行时,该行应添加到网页中。事件本身工作正常(使用断点和控制台项目测试),但由于某种原因,异步更新不执行任何操作。
我试图寻找类似的问题,但每个人都在使用asyncpostbacktrigger的按钮。但是,我对C#很新,所以我可能会误解UpdatePanel和ListView DataBind的工作方式。
任何帮助表示赞赏!
干杯, Tetsii
编辑:FileWasChanged是从FileSystemWatcher OnChanged事件调用的处理程序。如果从Page_Load或异步按钮触发器调用,处理程序将更新视图。