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