首页 > 解决方案 > 在 UpdatePanel 中将项目添加到 ListBox

问题描述

我有一个存在于 ASP.NET 网络表单上的 UpdatePanel 中的列表框。在UpdatePanel内部,还有一个Button,可以将一堆ListItem添加到Listbox中,这个PostBackTrigger如下图所示:

<asp:UpdatePanel ID="updSection6" runat="server">
    <ContentTemplate>
        <asp:LinkButton Text="Run Scan" ID="btnEditSectionStory6" runat="server" OnClick="btnRunScan_Click" />
        <br />
           <asp:ListBox ID="lbLog" runat="server" Height="263px" Width="747px"></asp:ListBox>
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnEditSectionStory6" />
    </Triggers>
</asp:UpdatePanel>

我在点击事件中添加项目:

 protected void btnRunScan_Click(object sender, EventArgs e)
        {
            lbLog.Items.Add("Scan Beginning...");

.....hundreds of other items
}

这些项目被添加到 ListBox,但是它是在整个 btnRunScan_Click 方法运行之后,而不是在每个事件发生时添加它们(因此用户可以在操作发生时接收消息)。我是否缺少 UpdatePanel 上的属性或其他内容?

TIA

标签: c#asp.netajaxwebforms

解决方案


要在不刷新页面的情况下添加项目或阻止调用循环事件,请使用以下代码并消除触发器内的 postBackTrigger。使用以下经过测试对我有用的代码。还使用 scriptManager 来防止异常使用 updatePanel

.aspx 设计文件

<asp:ScriptManager runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="updSection6" runat="server">
            <Triggers>
            </Triggers>
        <ContentTemplate>
            <asp:LinkButton Text="Run Scan" ID="btnEditSectionStory6" runat="server" OnClick="btnRunScan_Click" />
            <br />
               <asp:ListBox ID="lbLog" runat="server" Height="263px" Width="747px"></asp:ListBox>
        </ContentTemplate>
    </asp:UpdatePanel>

.cs 文件

protected void btnRunScan_Click(object sender, EventArgs e)
{
    lbLog.Items.Add("Scan Beginning...");
}

正如其他人还提到的,您还可以使用带有 ajax 的 jquery 在客户端进行编码来执行此操作。


推荐阅读