台灣最大程式設計社群網站
線上人數
1536
 
會員總數:241330
討論主題:186904
歡迎您免費加入會員
討論區列表 >> C# >> Gridview中使用HyperLink傳值給另外一頁,但網址列不帶任何參數
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Gridview中使用HyperLink傳值給另外一頁,但網址列不帶任何參數
價值 : 30 QP  點閱數:522 回應數:23

樓主

Liny
門外漢
0 5
355 24
發送站內信

捐贈 VP 給 Liny
各位晚安,我又來了;
前情提要:Gridview中的Linkbutton.Text改變文字顏色

這次的目的:
因為我需要將原本頁面的三個值在滑鼠點擊後傳值到另一頁,再根據這三個值分別讀取另一個function去顯示資料庫裡的資料。
[color=Red]需求:

三個值都要透過HyperLink 新開視窗去傳值,並且都傳到同一頁;希望能在UserRoleData.aspx使用Request.Form["XXX"]接值後,再讀取function做處理,
但我現在卡在網址列不能顯示任何參數,但不帶參數有爬文看到可以Server.Transfer,但我的原頁面有套用MasterPage,
請問該如何做?
或是有其他非Server.Transfer的方法也可以!

附註:之所以不用hyperlinkfield,是因為原本頁面我需要有滑鼠遊標變成手指狀態,所以改成使用HyperLink


原本的頁面修改如下:
.aspx


.aspx.cs


欲傳值過去的頁面UserRoleData.aspx



UserRoleData.aspx.cs


搜尋相關Tags的文章: [ GridView ] , [ OnRowDataBound ] , [ HyperLink ] , [ Url ] , [ 參數 ] ,
本篇文章發表於2017-10-31 18:58
== 簽名檔 ==

學無止境!
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
先把所謂的3個值,存到cookie
這樣子超連結就不必帶網址參數,讓另一頁直接抓cookie就好...

(如果每個連結要帶的值都不一樣,那就得在點擊連結時,利用onclick先把指定的值寫進cookie)

==============
再不然就是在post的target以及action動手腳(依然要靠javascript動態去變更form的設定...
以你的情況來說難度可能還更高)




建議你描述一下【網址不能帶參數】的原因....
(怕被人手動亂改的話, 把參數加密就行了)
本篇文章回覆於2017-11-01 16:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
網址不能帶參數,是練習作業需求....我在猜應該是跟資料庫安全有關!
請問如果用Session可以嗎?
但我在找Session資料時...又叫我把.aspx的HyperLink改成linkbutton,但這樣沒辦法另開新視窗!
卡在MasterPage又不能使用form method
本篇文章回覆於2017-11-01 18:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
改寫如下:
但是傳送過去的頁面取不到值....
原.aspx


原.aspx.cs


UserRoleData.aspx code未改
UserRoleData.aspx.cs

本篇文章回覆於2017-11-01 20:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

asp小菜渣
檢舉此回應
先回答妳的問題,再問妳問題:

一、.aspx的HyperLink改成linkbutton,但這樣沒辦法另開新視窗!
有方法…google一堆解法。

二、您的session真的有抓到值嗎?
我猜是""…



本篇文章回覆於2017-11-02 17:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
二、您的session真的有抓到值嗎?
我猜是""…

您真是厲害,偵錯過程都是""一路到另外一頁所以Session完全抓不到值
本篇文章回覆於2017-11-02 17:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

asp小菜渣
檢舉此回應
暈倒
妳犯了跟上一篇一樣的問題

一、妳的寫法:
妳的寫法在html會變成


但妳c#這樣只會抓到td,但妳td是沒有值的…




二、所以一樣要改成:
我寫個範例(妳一樣可以改成findcontrol)
抓取cells裡頭的controls


再試試看~
本篇文章回覆於2017-11-02 17:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
我試著用Linkbutton並將其改寫在RowCommand裡,
但為什麼,Text比較短的文字...會抓不到值阿都是給空值!
有改過FindControl去抓、您教的Controls也用過,但好像少於10個英文字母的值...都不給抓

請問用在RowCommand和SelectedIndexChanged的差別在?
本篇文章回覆於2017-11-02 17:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

asp小菜渣
檢舉此回應
Hi

再請教一下,妳有進入到「SelectedIndexChanged」的事件嗎?
因為我發現妳原本aspx的程式碼並未加上「CommandName="Select" 」
本篇文章回覆於2017-11-02 17:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

asp小菜渣
檢舉此回應
補上
可以參考這篇「http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20080429154010U09.html」
本篇文章回覆於2017-11-02 17:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
回#8,有進去,我後來有找到類似的範例有加,但用SelectedIndexChanged事件,
在原本的.aspx click RoleName,只要文字短短的,所讀到的值都是""
本篇文章回覆於2017-11-02 18:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

asp小菜渣
檢舉此回應

我試著用Linkbutton並將其改寫在RowCommand裡,
但為什麼,Text比較短的文字...會抓不到值阿都是給空值!
有改過FindControl去抓、您教的Controls也用過,但好像少於10個英文字母的值...都不給抓


..不可能
你要不要再貼一次修改後的code呢?
我自己照你的方式做linkbutton hyperlink都是正常的
本篇文章回覆於2017-11-03 08:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應
修改過程式如下
原畫面.aspx


原畫面.aspx.cs


接值UserRoleData.aspx


接值UserRoleData.aspx.cs


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

asp小菜渣
檢舉此回應
看起來很單純…我假設你的GridView中的Rolename,type,value都有顯示值好了。

你把這段改用FinControl的方式,
原本的方法要在偵錯debug下cmd比較容易知道問題所在。


改成findcontrol如下:


如果還是有問題,你先在debug中斷點,看看row.FindControl("RoleName"),有沒有找到
沒有就null,但null在" "報出來前就會error了
有的話,看一下 Text有沒有值
本篇文章回覆於2017-11-03 10:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Liny
捐贈 VP 給 Liny 檢舉此回應

是為了更進一步抓對應每一行抓取值嗎?

另外可以回頭問個問題嗎?為什麼e.Row.Cells[i].Text,實際是讀到<td>阿?(覺得自己基礎觀念超差)
可是我之前做類似的RowDatabound時....都是靠e.Row.Cells[i].Text,對值做設計!
本篇文章回覆於2017-11-03 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

asp小菜渣
檢舉此回應

是為了更進一步抓對應每一行抓取值嗎?

另外可以回頭問個問題嗎?為什麼e.Row.Cells[i].Text,實際是讀到<td>阿?(覺得自己基礎觀念超差)
可是我之前做類似的RowDatabound時....都是靠e.Row.Cells[i].Text,對值做設計!

是的,但你的案例是抓控制項,而不是值

你的以前應該沒有用到cells中放控制項的情況。
一般單純的GridView,的確靠e.Row.Cells[i].Text取值。
但這次控制項是在cells中,有值的是控制項,而不是cells。
所以才要用controls的方式取值。
本篇文章回覆於2017-11-03 12:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

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