从事件处理程序

时间:2015-11-17 14:37:16

标签: c# asp.net listview

所以,我有一个事件在文本文件更新时总是被触发。这是事件处理程序:

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或异步按钮触发器调用,处理程序将更新视图。

0 个答案:

没有答案