BlockUI& Asp c#没有以正确的顺序运行代码?

时间:2015-06-11 09:49:28

标签: javascript jquery blockui

当我运行此代码时,BlockUI消息将首先显示" Opdater_Click"已经跑了。 (而且即使最后也会被调用Unblock,也会被困在那里。

我正在尝试在按下按钮时阻止我的UI,当UI被阻止时,它会设置数据源,完成后,应该取消阻止UI。

我试图暂停,认为Block命令可能需要时间,但事实并非如此。

任何人都对问题可能有什么建议?

ASPX文件中的Javascriptcode

var queryProduct= new SqlCommand
{
    CommandText = "SELECT DISTINCT ProductName FROM Products"
};   

using (var reader = Interaction.GetDataReader(queryProduct))
{
    while (reader.Read())
    {
         var b = new Product
         {
              ProductName = reader.GetString(reader.GetOrdinal("ProductName"))
         };
         products.Add(b);
    } 
}

C#代码

<script src="JavaScript/jquery-2.1.4.min.js"></script>
<script src="JavaScript/jquery.blockUI.js"></script>
<script type="text/javascript">
    function block() { $.blockUI({ message: "halp" });}
    function unblock() { $.bunlockUI();}
</script>

1 个答案:

答案 0 :(得分:0)

好的,首先,做这个服务器端并不能得到你想要的结果。

    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "sometihg", "block();", true);
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "sometihg", "unblock();", true);

这只意味着当服务器完成Opdater_Click功能时,他会非常快速地阻止所有内容然后再次解锁。这没用。你应该自己从你的html / javascript触发block()函数。 请记住,C#代码在服务器上执行,只有在完成后才会向浏览器返回内容。因此,这将有效地返回:&#34; block(); unblock()&#34;,这不是您想要的,因为您的用户可以一直点击按钮,直到服务器端操作返回。

我认为只需将块功能移动到HTML / Javascript即可解决您的问题。只有在服务器端操作完成后才能运行unblock功能。

例如,您可以使用jQuery执行此操作。

$( "#target" ).click(function() {
  block();
});

修改

另外,我认为它首先没有用,因为你用相同的键调用了RegisterClientScriptBlock两次。 &#34; sometigh&#34;应该是独一无二的。我不确定用两次相同的密钥调用它会发生什么。