我正在使用w3schools的代码: TryIt
如何使用OnClientClick将它与asp:LinkButton或asp:Button集成,而onClick正在执行服务器代码。
答案 0 :(得分:0)
聚会晚了将近一年,但我刚刚使用了同一个小吃店。
它需要一个UpdatePanel,并且您需要在事件处理程序上注册一个客户端脚本块:
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<div>
<asp:Button runat="server" ID="ShowSnackbar" Text="Show Snackbar" OnClick="ShowSnackbar_Click" />
</div>
<div id="snackbar">
<asp:Label runat="server" ID="Snack" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
后面的代码很棘手,但是有效。在页面加载时,创建一个包含javascript的字符串,然后使用该字符串值注册您的脚本块...
private string snackbarScript;
protected void Page_Load(object sender, EventArgs e)
{
snackbarScript = GenerateSnackbarJS();
}
private string GenerateSnackbarJS()
{
var sb = new StringBuilder();
sb.AppendLine("var x = document.getElementById('snackbar');");
sb.AppendLine("x.className = 'show';");
sb.AppendLine("setTimeout(function(){ x.className = x.className.replace('show', ''); }, 3000);");
return sb.ToString();
}
protected void ShowSnackbar_Click(object sender, EventArgs e)
{
Snack.Text = "Here's the snackbar";
ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "snackbar", snackbarScript, true);
}