将项目添加到UpdatePanel中的列表框

时间:2018-07-26 13:43:02

标签: c# asp.net ajax

我有一个Listbox,它存在于ASP.NET Web窗体的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

1 个答案:

答案 0 :(得分:0)

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

.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在客户端进行编码以实现这一目标。