Zer*_*One 3 c# asp.net asp.net-webpages
我的aspx网页上有一个按钮,应该在c#代码后面的代码中"点击".OnClientClick方法然后调用JS确认对话框,因此只有当用户单击"确定"时才执行btn_Click函数...
这是我的代码到目前为止: Variante 1
ASPX:
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" />
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
通过以下代码获取代码示例:http://forums.asp.net/t/1046550.aspx?How + do+you + laise + a +button + click&event + from+outside+ the+ button+
我想调用OnClientClick方法,但是当我用'OnClientClick'替换'OnClick'时,会出现以下错误:
用户代码未处理System.NullReferenceException消息=未将对象引用设置为对象的实例.
编辑: Variante 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();" />
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
但是在我的btnConfirm_Click函数被调用之前页面回发...
谢谢,
迈克尔
如果OnClientClick返回值为true,OnClick则将触发codebehind 事件.如果OnClientClick返回false则不会.
如果OnClientClick不返回任何内容,则无论如何都会触发codebehind事件.所以你要..
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" />
<script language="javascript">
function Validate() {
return confirm('Save in db?');
}
</script>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
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
}
Run Code Online (Sandbox Code Playgroud)
更新:
这篇文章刚引起我的注意,不知道为什么我没有把它包含在原帖中,但是你可以在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>
Run Code Online (Sandbox Code Playgroud)
您需要在按钮单击上添加两个事件.OnClientClick处理客户端脚本代码并OnClick处理服务器端事件调用.
所以添加两个事件和那些处理程序.NullReferenceException你是因为这个而得到的.
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" OnClientClick="return Validate();" />
Run Code Online (Sandbox Code Playgroud)
并且在你的javascript代码中可以
function Validate(){
if (valied())
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50794 次 |
| 最近记录: |