【问题标题】:Add Items To ListBox In UpdatePanel在 UpdatePanel 中将项目添加到 ListBox
【发布时间】:2018-07-26 13:43:01
【问题描述】:

我有一个列表框,它存在于 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

【问题讨论】:

  • 我不明白这个问题。您将控件放置在 UpdatePanel 中,然后附加一个 PostBack 触发器。除非updSection6 里面有更多的控件,否则这里显示的完全没用。但是“运行整个 btnRunScan_Click 方法”是什么意思?如果您希望项目在 ListBox 中一一显示?这不是它的工作原理。
  • 你后面的评论是正确的。我正在寻找一种在 btnRunScan_Click 方法末尾逐个添加项目而不是全权委托的方法
  • Webforms 不能这样工作。只有当所有代码运行完成后,更新 html 才会发送到浏览器。如果你想要这个,你将需要一个带有 web 服务的 Ajax 解决方案。
  • IOW,导致回发的控件(如 LinkBut​​ton)触发器,如果​​它们位于更新面板内;如果它们在更新面板之外,您只需要添加一个触发器。而且,每次回发都会发布整个页面。如果回发发生在更新面板内(或通过触发器),则只会更新更新面板内的 html。

标签: c# asp.net ajax webforms


【解决方案1】:

要在不刷新页面的情况下添加项目或阻止调用循环事件,请使用以下代码并消除触发器内的 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 在客户端上进行编码来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多