在后面的代码中调用按钮的 OnClientClick
Invoke OnClientClick of button in code behind
我的 aspx 网页中有一个按钮,在我的 c# 代码后面的代码中应该是 'clicked'。 OnClientClick 方法然后调用 JS 确认对话框,因此 btn_Click 函数仅在用户单击 'OK'...
时执行
到目前为止,这是我的代码:
变量 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
处理客户端脚本代码,OnClick
处理服务器端事件调用。
所以添加两个事件和那里的处理程序。 NullReferenceException
你因此得到的。
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" OnClientClick="return Validate();" />
并且在您的 javascript
代码中可以是
function Validate(){
if (valied())
return true;
return false;
}
如果 OnClientClick
的 return 值为 true,则将触发代码隐藏 OnClick
事件。如果 OnClientClick
被 returned false 那么它就不会。
如果 OnClientClick
没有 return 任何代码隐藏事件都会触发。所以你想要..
<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
}
更新:
这个post刚刚引起我的注意,不知道为什么我没有把它包含在我原来的post中,但是你可以在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>
100% 代码后确认!有时当您想删除或更新某些内容时,asp.net 中的代码隐藏或服务器端确认非常烦人,经过长时间搜索后,我得到了如下解决方案:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="return confirm('Are you sure to BLOCK this customer ?')" OnClick="btnSave_Click" />
现在,每当您单击此按钮时,它都会要求确认,如果您 select "NO" 页面将不会 post,如果您 select "Yes" 然后页面将 post 并且您的按钮单击事件将被触发...如下所示
后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
}
// Before coming here,,,there will be confirmation
protected void btnSave_Click(object sender, EventArgs e)
{
GetCustomerInfo();
}
我的 aspx 网页中有一个按钮,在我的 c# 代码后面的代码中应该是 'clicked'。 OnClientClick 方法然后调用 JS 确认对话框,因此 btn_Click 函数仅在用户单击 'OK'...
时执行到目前为止,这是我的代码: 变量 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
处理客户端脚本代码,OnClick
处理服务器端事件调用。
所以添加两个事件和那里的处理程序。 NullReferenceException
你因此得到的。
<asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_Click" OnClientClick="return Validate();" />
并且在您的 javascript
代码中可以是
function Validate(){
if (valied())
return true;
return false;
}
如果 OnClientClick
的 return 值为 true,则将触发代码隐藏 OnClick
事件。如果 OnClientClick
被 returned false 那么它就不会。
如果 OnClientClick
没有 return 任何代码隐藏事件都会触发。所以你想要..
<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
}
更新:
这个post刚刚引起我的注意,不知道为什么我没有把它包含在我原来的post中,但是你可以在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>
100% 代码后确认!有时当您想删除或更新某些内容时,asp.net 中的代码隐藏或服务器端确认非常烦人,经过长时间搜索后,我得到了如下解决方案:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="return confirm('Are you sure to BLOCK this customer ?')" OnClick="btnSave_Click" />
现在,每当您单击此按钮时,它都会要求确认,如果您 select "NO" 页面将不会 post,如果您 select "Yes" 然后页面将 post 并且您的按钮单击事件将被触发...如下所示
后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
}
// Before coming here,,,there will be confirmation
protected void btnSave_Click(object sender, EventArgs e)
{
GetCustomerInfo();
}