当我运行此代码时,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>
答案 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;应该是独一无二的。我不确定用两次相同的密钥调用它会发生什么。