VB InfoBoxes 是否适用于 Web 应用程序?

问题描述 投票:0回答:1

我正在使用定时信息框来保持用户更新,因为他们的记录被插入到数据库中,并且我正在使用以下 Sub 创建一个定时信息框。它完全按照我的意愿工作,但我现在才意识到 MessageBoxes 不适用于 Internet 应用程序。我无法决定 InfoBox 是否可以通过互联网工作,似乎 可能会,但我真的不确定。为了更新标签,我尝试执行 Async 时经历了一段可怕的时光。这似乎是迄今为止最简单的解决方案,如果它会在所有内容上传到服务器后实际显示。

Sub MessageBoxTimer(curRec As String, TotalRec As String)
    Dim AckTime As Double, InfoBox As Object
    InfoBox = CreateObject("WScript.Shell")
    'Set the message box to close after 10 seconds
    AckTime = 1
    Select Case InfoBox.Popup("Updating Record " + curRec + " of " + TotalRec,
AckTime, "Scheduling all users", 1)
        Case 1, -1
            Exit Sub
    End Select
End Sub
vb.net async-await alert messagebox infobox
1个回答
1
投票

你必须采用一些客户端代码来做到这一点。

我建议采用jquery.ui dialog。所以,假设你已经安装了 jQuery(你需要它),那么还要安装 jQuery.ui。

所以,当我们在表单上放置一个按钮时,该按钮可以有 2 个事件。一个将运行服务器端代码(回发),然后还可以有一个也运行的客户端(javascript)事件。

当然,如果服务器端代码运行得非常快,那么该对话框将不会“出现”或显示很长时间。

所以,你可以说在服务器端代码中添加一个“dealy”。事实上,这样做不需要定时对话框,因为当代码隐藏完成后,整个浏览器页面从服务器传回,重新加载并刷新页面。

所以,让我们设置一个假延迟,并在服务器端代码运行时弹出一个消息框。

换句话说,我们“可以”设置一个定时框,但是当服务器端代码完成后,该框无论如何都会关闭。

所以,说这个简单的标记:

        <asp:Button ID="cmdStart" runat="server" 
            Text="Start the process" CssClass="btn"
            OnClick="cmdStart_Click"
            OnClientClick="mywaitdialog()"                
            />


        <div id="mywaitdialog" style="display: none" class="myshadow">
            <h3>Updating data - please wait</h3>
            <div style="text-align: center">
                <img src="../Content/wait2.gif" style="height: 64px; width: 70px" />
            </div>
        </div>

所以,你可以把任何你想要的东西放到那个 div 里。当你看起来很漂亮时,然后按照上面的方法设置 display:none 。

现在,JQuery.UI 对话框将为您做的是将 htat "div" 转换为对话框。

所以,在标记的正下方,我们有这个:

    <script>

        function mywaitdialog() {
            var myDialog = $("#mywaitdialog");
            myDialog.dialog({
                title: "Processing",
                modal: true,
                width: "350px",
            });
        }

    </script>

这个测试按钮示例背后的代码:

Protected Sub cmdStart_Click(sender As Object, e As EventArgs)

    ' fake a long process
    System.Threading.Thread.Sleep(5000)     ' 5 second delay

End Sub

现在的结果是这样的:

© www.soinside.com 2019 - 2024. All rights reserved.