我有一个按钮加了:
Button4.Attributes["onClick"] = "javascript:return confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)');";然后我在BTCreate按钮中间要处理:
protected void BTCreate_Click(object sender, EventArgs e)
{
//上面省略有一段代码判断其他条件...
if (!string.IsNullOrEmpty(icOAHttp))
{
inRun = 0 ;
[激活Button4的CLICK事件,以便弹出选择提示框]
}
if (string.IsNullOrEmpty(icOAHttp) && !String.IsNullOrEmpty(ilSel) || inRun == 1)
{
[执行重新生成付款的过程]
} }
Button4的 Button4_Click代码有 inRun = 1;请问上面 [激活Button4的CLICK事件,以便弹出选择提示框] 的代码怎么写,或怎么解决这个弹出选择提示框且选择后依选择的什么按钮来执行不同的过程的问题?
Button4.Attributes["onClick"] = "javascript:return confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)');";然后我在BTCreate按钮中间要处理:
protected void BTCreate_Click(object sender, EventArgs e)
{
//上面省略有一段代码判断其他条件...
if (!string.IsNullOrEmpty(icOAHttp))
{
inRun = 0 ;
[激活Button4的CLICK事件,以便弹出选择提示框]
}
if (string.IsNullOrEmpty(icOAHttp) && !String.IsNullOrEmpty(ilSel) || inRun == 1)
{
[执行重新生成付款的过程]
} }
Button4的 Button4_Click代码有 inRun = 1;请问上面 [激活Button4的CLICK事件,以便弹出选择提示框] 的代码怎么写,或怎么解决这个弹出选择提示框且选择后依选择的什么按钮来执行不同的过程的问题?
<asp:button id="btn" runat="server" text="添加" OnClientClick="{if(confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表'))return true;return false;}" OnClick=""/>
即可!这样当你选择确定时返回的是true 于是会执行OnClick事件,当你点击取消时confirm返回false就不执行OnClick事件了
注: 不能是在按钮在一开始就弹出提示框.
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
<Triggers>
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />
</div>
</form>
</body>
</html>
<script language="javascript" type="text/javascript">
function ChkIt()
{
if(confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)'))
{
document.getElementById("Button2").click();//Button1在后台执行"重新生成付款操作"
}
else
{
document.getElementById("Button3").click();//Button2在后台执行"打开已有付款表操作"
}
}
</script>cs: protected void Button1_Click(object sender, EventArgs e)
{
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);
}
protected void Button2_Click(object sender, EventArgs e)
{
//执行"重新生成付款操作"...
}
protected void Button3_Click(object sender, EventArgs e)
{
//执行"打开已有付款表操作"...
}
谢谢,我按你的修改了我的代码,但是在调试时没有执行那个提示框,且 ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);语句也是正常执行的.
<script language="javascript" type="text/javascript">
function ChkIt() {
if (confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)')) {
document.getElementById("Button4").click(); //Button1在后台执行"重新生成付款操作"
}
}
<asp:Button ID="BTCreate" runat="server" Text="生成付款表"
Height="32px" Width="82px" Enabled="False" onclick="BTCreate_Click" />
<asp:Button ID="Button4" runat="server" onclick="Button4_Click" Enabled="False"
Width="16px" /> if (!string.IsNullOrEmpty(icOAHttp))
{
inRun = 0;
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);
}
上面是部份代码
document.getElementById("Button4").click();
的执行到这里时报错
Microsoft JScript 运行时错误: 'document.getElementById(...)' 为空或不是对象
那么这里就是 btnAgain
Text="Click Me" runat="server" OnClick="BTCreate_Click" />后台代码:
然后我在BTCreate按钮中间要处理:
protected void BTCreate_Click(object sender, EventArgs e)
{
//上面省略有一段代码判断其他条件...
if (!string.IsNullOrEmpty(icOAHttp))
{
inRun = 0 ;
[激活Button4的CLICK事件,以便弹出选择提示框]
}
if (string.IsNullOrEmpty(icOAHttp) && !String.IsNullOrEmpty(ilSel) || inRun == 1)
{
[执行重新生成付款的过程]
}
}程序会先执行前台的onclientclick,如果这个没有通过,也不会执行后台的代码,所以后台就不用
判断了。
主要是: 我对 [激活Button4的CLICK事件,以便弹出选择提示框] 这个不明白如何去实现
光得到几段代码,眼前的问题是解决了,但不求甚解,以后碰到类似的问题还是不知道如何做。
我当年做了两年多web开发,但因为懒,不求甚解,对web程序没有真正理解,后来搞asp.net时,仍然不知道怎么做。后来搞懂了它的原理,什么asp.net mvc, php都很快做出产品来。
试试:Page.ClientScript.RegisterClientScriptBlock(typeof(page),"key","<script>js代码</script>");