台灣最大程式設計社群網站
線上人數
756
 
會員總數:245919
討論主題:189508
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 如何跨表單執行按鈕即傳送值
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何跨表單執行按鈕即傳送值
價值 : 100 QP  點閱數:356 回應數:18
樓主

pkko
門外漢
0 27
554 64
發送站內信

各位大大好,想請教以下兩個問題

相同的環境都是建立在我有A.aspx的網頁和B.aspx 的網頁

問題1:如何在B.aspx的網頁按下按鈕之後,可以關閉B網頁並且執行A.aspx網頁的button1.click事件?
關閉網頁我目前使用沒問題(Response.Write("<script>window.opener=null;window.close();</script>"))

問題2:如何將B網頁上的textbox1.text傳送到 A 網頁的 textbox2.text?


搜尋相關Tags的文章: [ 跨表單 ] , [ asp.net ] ,
本篇文章發表於2020-03-25 10:36
== 簽名檔 ==
努力!努力!再努力!!!
1樓
問題一

在A網頁寫一個javascript的 function myclick() { ..按下按鈕.. }

在B網頁先輸出 window.opener.myclick();
再輸出 window.close();
(window.opener=null; 這一行在新版的瀏覽器中已經沒有用處了)
======================================

問題二
在A網頁寫一個 javascript的 function mysetvalue(tvalue) { ...把tvalue寫入至 textbox2.text }

在B網頁輸出 window.opener.mysetvalue( textbox1.text的值 )

======================================

大概就這樣吧
本篇文章回覆於2020-03-25 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

MIS2000 Lab
檢舉此回應
關於「問題2」

ASP.NET (Web Form)有 "跨網頁張貼"
不需寫 JavaScript就能做到,您也可以參考一

https://dotblogs.com.tw/mis2000lab/2008/05/26/4123

影片介紹 https://youtu.be/lZqf8DfRyqs
本篇文章回覆於2020-03-25 12:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

pkko
檢舉此回應
感謝大大
第一種方式
我嘗試了以下兩種語法都失敗,請問大大我哪邊錯了= =

本篇文章回覆於2020-03-25 12:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最簡單的方式 在網頁上放一個panel 把開窗的那頁的控制項 全部放在panel內
點開窗其實就是 panel.visual= true 平常 panel.visual= false 這樣就不用傳值了
本篇文章回覆於2020-03-25 12:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

pkko
檢舉此回應
感謝4樓大大回復如此聰明的方式
但平常panel要放在哪邊排版?
因為當它=true的時候位置應該是固定的,若不是跳出一個視窗會有點奇怪
我也想到一個方式就是同一個畫面,裡面有A和B兩個,正常操作A,要輸入日期或是金額等等將B=true, A=false 但這種版面在webform我不知道怎麼調= =
本篇文章回覆於2020-03-25 13:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
問題一,
Button1_Click(), 是你後台的程式碼, 跟前台的javascript無關,

如果你的頁面有使用jquery的話,

你應該要在 A網頁 加上
<script> function myclick() { $('#Button1').click(); } </script>

然後在B網頁
Response.Write("<script>window.opener.myclick();</script>")

這樣才能讓B網頁去按下A網頁的Button1


本篇文章回覆於2020-03-25 13:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
小喵個人好奇
您區分成B.aspx要開啟並送資料Post給A.aspx

有沒有想過把這樣的東西寫在同一頁
同一頁會好做、好維護很多

^.^a
本篇文章回覆於2020-03-25 14:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
如果沒有特別的原因必須要分兩頁操作撰寫

其實把兩個頁面寫在同一頁,控制就會容易許多
小喵做個小小的範例如下:
小喵用Boostrap的Modal來模擬A.aspx的情況

aspx


aspx.vb


後端程式碼的邏輯相當簡單
只需要控制divModal的顯示與隱藏
傳送的時候讓Modal顯示

另外,Client端的Script是查一下是否有Modal存在
有存在就執行Script讓它顯示、並且鎖定旁邊的點選(點選旁邊不要關閉Modal)

樓主可以試試看

^.^a
本篇文章回覆於2020-03-25 15:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

P陳
檢舉此回應
不是可以用 Session 來存取嗎?
本篇文章回覆於2020-03-25 17:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

pkko
檢舉此回應
感謝九樓的大大
我是webform新手
不知道SESSION怎麼用....還請開示一下
本篇文章回覆於2020-03-25 18:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
Session是很寶貴的資源
小喵我個人是除非必要(例如安全性的資料),盡量避免用Session

^.^a
本篇文章回覆於2020-03-25 18:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
最有價值解答

真的有點難
檢舉此回應
你把本頁的控制項包在一個panel 開窗的控制項包在另外的panel

當你按按鈕 本頁的panel visual false 開窗的true
開窗輸入完畢後 把visual的屬性反之

panel 可以用絕對位置
<asp:Panel ID="Panel1" runat="server" style="z-index: 1; left: 508px; top: 226px; position: absolute; height: auto; width: auto; background-color: #FFCCFF" Visible="false">
</asp:Panel>
本篇文章回覆於2020-03-25 21:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

pkko
檢舉此回應
感謝12樓的大大,我成功了,超簡單的方式!!!
本篇文章回覆於2020-03-25 23:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
小喵#8所貼的
不知道樓主是否有測試過

透過BootStrap畫面會更貼近於類似開視窗(對話窗)的感覺
原理就同#12一樣

程式碼幾乎完整放上
適當的複製貼上應該就可以跑了

^.^a
本篇文章回覆於2020-03-26 09:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

pkko
檢舉此回應
感謝topcat 版主大大的辛苦回覆
針對#8的部分

因為小弟不才...撰寫的方式不是用MVC 架構,也不是用html+CSS+javascript的方式撰寫
自然也不懂如何使用Boostrap...

我是用最簡單的ASP.net 的webform方式撰寫
所以您辛苦提供的方式
小弟研究了一番還是無法使用= =
真是非常抱歉
但您的努力
在未來小弟進步之後,再回來看這篇,應該就可以看懂了!!!
非常感謝您^_^
本篇文章回覆於2020-03-26 10:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.