首页 新闻 会员 周边 捐助

asp.net confirm

0
悬赏园豆:10 [已解决问题] 解决于 2010-05-27 21:52

问题描述:关于一个订单统计,统计好之后,将统计结果放入数据表。如果该订单统计过,要提示是否覆盖,是的话,就执行更新语句。否不执行更新。我想给按钮添加confirm,但后台不知道如何得到confirm的返回值,若得到false,不执行更新语句,true执行更新。请大侠帮帮忙了。

Jaryleely的主页 Jaryleely | 菜鸟二级 | 园豆:367
提问于:2010-05-27 14:55
< >
分享
最佳答案
0

在 code-behind 中用字符串组出整句 js  和 confirm,
然后在字符串的 js 里面,直接调用 Button 的 click() ,
即可实现 js 直接调用 C#。

不过这是模拟的,client-server 事实上来回两次,
但用户感觉不出来。
和 ajax 真的中途拦截 confirm 选项 request 的原理不同。

http://www.dotblogs.com.tw/jimmyyu/archive/2009/06/07/8712.aspx

protected void Button1_Click(object sender, EventArgs e)
2     {
3         //Do something before confirm
4         
5         //再動態註冊一個JavaScript詢問使用者是否繼續執行,如果確定的話,就直接幫他click button
6         Page.ClientScript.RegisterStartupScript(typeof(string), "script", ")){document.getElementById('Button2').click();};", true);
7     }

 

在上面这句的字符串 js 中,加入 confirm。
在这个 click(); 后面,直接调用 C# 类.方法名称(),
即可模拟,confirm 还完后,依选项,js 直接调用 C# 不同的方法。


收获园豆:8
WizardWu | 小虾三级 |园豆:1402 | 2010-05-27 21:40
这种方法貌似简单些
Jaryleely | 园豆:367 (菜鸟二级) | 2010-05-27 21:51
@Jaryleely: thanks, 手边没示例,明早上再帮您在这贴完整的示例。
WizardWu | 园豆:1402 (小虾三级) | 2010-05-27 23:49
@WizardWu: --------------------------------------- Default.aspx: <asp:Button ID="Button1" runat="server" Text="Button1 (按下後會彈出 Confirm 再供選擇)" onclick="Button1_Click" /> <p></p> 畫面下方的 Button2 被故意隱藏起來,因我們只是要它的 Button2_Click 事件處理函數,作為傳遞流程的中介。<br /> <asp:Button ID="Button2" runat="server" Text="" onclick="Button2_Click" ForeColor="White" Width="0px" Height="0px" BorderColor="White" BorderWidth="0px" /> --------------------------------------------- Default.aspx.cs: protected void Page_Load(object sender, EventArgs e) { //this.Button1.Click += new System.EventHandler(this.Button2_Click); } protected void Button1_Click(object sender, EventArgs e) { Response.Write("<font color='red'>Button1_Click 執行完成 </font><p>"); //二段式的 Client-Server 來回 : //Server-side 的 Button1_Click 執行完、回到 Client-side 后,會彈出 JavaScript 的 Confirm 對話框,若 //使用者選擇了「確定」,則會「自動」執行 Button2 的 Click 事件處理函数,亦即二度前往 Server-side Page.ClientScript.RegisterStartupScript(typeof(string), "Button1_Click", "var retValue=confirm('Submit form?');" + "if (retValue) {document.getElementById('Button2').click();}; else { }", true); } protected void Button2_Click(object sender, EventArgs e) { Response.Write("<font color='red'>Button2_Click 執行完成 </font><p>"); this.func3(); } //這個為我們在後台,真正想被執行的自訂函數 private void func3() { Response.Write("<font color='red'>func3 執行完成 </font><p>"); }
WizardWu | 园豆:1402 (小虾三级) | 2010-05-28 08:46
很好,很强大!
Jaryleely | 园豆:367 (菜鸟二级) | 2010-06-07 11:08
其他回答(2)
0

cs中是不能与js中的confirm有所交互,只能请求前ajax判断一下是否有报表,如果ajax返回有则提示用户是否更新的confirm框,这时候用户如果点确定,则ajax过去进行覆盖操作,取消则不做任何ajax操作。

收获园豆:1
Astar | 园豆:40805 (高人七级) | 2010-05-27 15:21
还挺复杂的啊。
支持(0) 反对(0) Jaryleely | 园豆:367 (菜鸟二级) | 2010-05-27 15:29
@Jaryleely:是winform就简单了...
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-27 15:44
0

Astar说得对。

收获园豆:1
Jerry Qian | 园豆:19 (初学一级) | 2010-05-27 15:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册