Asp.net vb.net在一个块中执行命令

时间:2013-07-08 20:33:45

标签: asp.net vb.net

我试图让一些页面工作,但我有一个问题,我无法找到解决方案......

我有一段类似的代码:

Protected Sub chkClient_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkClient.CheckedChanged
    If chkClient.Checked Then
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('Processing')", True)
        LoadClients()
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('Done')", True)
    End If
End Sub

嗯,事实是函数 LoadClients()需要一些时间处理,并且两个警报在函数完成后触发。这是为什么?如何在 LoadClients()功能之前启动"警告('处理')"

非常感谢!

3 个答案:

答案 0 :(得分:2)

因为LoadClients正在服务器端进行处理,而您对RegisterStartUpScript的调用是在页面加载时连接代码以在客户端运行。

以下是有关RegisterStartUpsScript和一些示例的更多信息。

Link

如果您希望在处理开始之前显示第一个警报,您可以使用ajax调用,您可以使用许多库即jQuery,或者只是在单击事件(或其他方式)上提交表单之前运行警报javascript您用来提交表格的事件

答案 1 :(得分:2)

加载页面时会发生什么情况,您只需获得Processing提醒,然后点击Done上的确定后再显示Processing提醒。

您的所有代码都在服务器端完成,因此您告诉您的网页在呈现时向HTML添加提醒,然后告诉您的网页运行LoadClients(),然后告诉您的网页添加另一个警告HTML。

整个ScriptManager.RegisterStartupScript(Page,....行只是说“当这个页面渲染时我想让它也渲染这个javascript - 它实际上并没有在那里运行它。

为了在所有客户端执行此操作,您需要对Web方法执行AJAX调用,该方法将加载客户端并将其返回到您将处理和显示它的浏览器。

这是一个基础知识教程,这将让您了解如何使用一些javascript和AJAX调用来调用Web方法。从那里世界是你的牡蛎:):http://trentgardner.net/net/asp-net-webmethods-with-jquery-and-ajax/

答案 2 :(得分:1)

在您的复选框上,添加OnClientClick脚本:

<asp:CheckBox OnClientClick="alert('Processing...'); return true;" ... />

从服务器端事件处理程序中删除处理脚本注册 - 您不再需要它。那应该是你的伎俩。

事件顺序为:

  1. 用户点击复选框
  2. 触发OnClientClick并显示警报。
  3. 回发到服务器,将处理服务器端点击事件。
  4. 页面重新呈现,并显示您注入的“完整”警报。