gpt4 book ai didi

c# - 在后面的代码中调用按钮的 OnClientClick

转载 作者:行者123 更新时间:2023-11-30 13:19:08 29 4
gpt4 key购买 nike

我的 aspx 网页中有一个按钮,应该在我的 c# 代码后面的代码中“单击”该按钮。 OnClientClick 方法然后调用 JS 确认对话框,因此 btn_Click 函数仅在用户单击“确定”时执行...

到目前为止,这是我的代码:变体 1

aspx:

<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" />

aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
// set OnClientClick
btnConfirm.OnClientClick = "confirm('Save in DB?');";

// invoke method
Type t = typeof(System.Web.UI.WebControls.Button);
object[] p = new object[1];
p[0] = EventArgs.Empty;
MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
m.Invoke(btnConfirm, p);
}
protected void btnConfirm_Click(object sender, EventArgs e)
{
//save something in database
}

通过以下方式获得代码示例:http://forums.asp.net/t/1046550.aspx?How+do+you+raise+a+button+click+event+from+outside+the+button+

我想调用 OnClientClick 方法,但是当我将“OnClick”替换为“OnClientClick”时出现此错误:

System.NullReferenceException was unhandled by user code Message=Object reference not set to an instance of an object.

编辑:变体 2:

我试着像这样重写我的程序:ASPX:

<script language="javascript">
function invokeButtonClick() {
document.getElementById("btnConfirm").click();
}

function Validate() {
return confirm('Save in db?');
}
</script>
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" OnClientClick="return Validate();" />

aspx:cs:

protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, GetType(), "InvokeButton", "invokeButtonClick();", true);
}

protected void btnConfirm_Click(object sender, EventArgs e)
{
// save something in database
}

但是在我的 btnConfirm_Click 函数被调用之前页面回发......

谢谢,

迈克尔

最佳答案

如果 OnClientClick 的返回值为 true,则将触发代码隐藏 OnClick 事件。如果 OnClientClick 返回 false,则不会。

如果 OnClientClick 没有返回任何代码隐藏事件,无论如何都会触发。所以你想要..

<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" />

<script language="javascript">
function Validate() {
return confirm('Save in db?');
}
</script>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
// set OnClientClick
btnConfirm.OnClientClick = "return Validate();";
}

protected void btnConfirm_Click(object sender, EventArgs e)
{
//save something in database
}

更新:

这篇文章引起了我的注意,不知道为什么我没有把它包含在我原来的文章中,但你可以在 aspx 标签中使用“OnClientClick”:

<asp:Button runat="server" ID="btnConfirm" OnClientClick="return Validate();" Text="Confirm" OnClick="btnConfirm_Click" />

<script language="javascript">
function Validate() {
return confirm('Save in db?');
}
</script>

关于c# - 在后面的代码中调用按钮的 OnClientClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760687/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com