台灣最大程式設計社群網站
線上人數
1223
 
會員總數:243311
討論主題:188091
歡迎您免費加入會員
討論區列表 >> ASP.NET >> ASP gridview ckeckbox 多選顯示抓取值
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ASP gridview ckeckbox 多選顯示抓取值
價值 : 10 QP  點閱數:538 回應數:16

樓主

raylight
門外漢
0 7
177 15
發送站內信

請問一下
我想在 gridview中做一個 ckeckbox 做多選
然後把選取的值 傳到另一畫面列印出來
以上是否有可能做到呢??


搜尋相關Tags的文章: [ gridview ] , [ ckeckbox ] , [ Session值 ] ,
本篇文章發表於2018-04-20 09:16
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

raylight
檢舉此回應
補充
如圖上方是 GridView1
點選確定選取後
GridView1會消失
只有顯示GridView2
前台畫面

然後GridView2內容是抓取GridView1 CKECKBOX回傳值做的多選項目


上方程式有抓到CKECKBOX回傳值 存於PKname
但是GridView2中的SqlDataSource

沒抓到值~是我選錯不是用cookie?
本篇文章回覆於2018-04-20 16:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

真的有點難
檢舉此回應
因為是多選 你的變數應該是陣列 或符號區隔吧 不然塞在temp table 或datatable也可以
本篇文章回覆於2018-04-21 07:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

raylight
檢舉此回應
請問已修正成


本篇文章回覆於2018-04-21 08:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
首先,先正名一下
千萬不要用asp當作是asp.net的簡稱

建議寫清楚,ASP.NET WebForm這個名稱才不會讓人有誤解

-------
回到問題

整理一下需求
大約是:
1.取得Gridview1勾選的東西
2.GridView1消失
3.GridView2依據1取得的資料,讀取資料庫,放GridView2的查詢條件,並且重新綁定

大概依照這樣的步驟走
1.的方式,會用For Each讀取每一個Row,再透過FindControl去找到CheckBox
然後判斷Checked,用字串或陣列處理
2.取得資料,條件從1.的結果去組合
3.GridView2與GridView1的Visiable去處理

以下小喵以北風資料庫的Shippers這個資料表做示範
aspx如下:



aspx.cs


特別說明:
小喵where IN的部分,會有SqlInjection
但為了讓程式共容易理解些,小喵先保留這部分

正式寫的時候,建議參考以下這篇修改

https://stackoverflow.com/questions/9384446/how-to-pass-sqlparameter-to-in

本篇文章回覆於2018-04-23 00:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
另外再一個提醒

小喵的範例中,沒有處理到當沒有勾選時的狀況
這部分請自行補上,如果補上有問題,請提出

^_^
本篇文章回覆於2018-04-23 00:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

MIS2000 Lab
檢舉此回應
給您一個小建議:
先作「簡單版」,成功以後,再逐步把功能加進去
如此可以確定自己"卡"在那邊?

例如:一開始,我在畫面上方有一段 CheckBoxList
點選以後,搜尋結果出現在下方的 GridView2

如果這個範例成功了
再依照您的需求,把上面那裡改成「每一列裡面都有一個CheckBox的 GridView1」

試試看

這裡有一個小範例,不知道有沒有幫上忙?

[習題] FindControl 簡單練習--GridView + CheckBox,點選多列資料(複選刪除)#1 簡單版
https://dotblogs.com.tw/mis2000lab/2009/11/24/gridview_checkbox_delete
本篇文章回覆於2018-04-24 20:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

raylight
檢舉此回應




WHY??
本篇文章回覆於2018-04-25 11:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

raylight
檢舉此回應
我有試著改變 gridview2 去抓取 lebel1的值
若單一選取 是能成功的
但多選後 由於 無法斷點lebel值 變成 讀取不到內容
本篇文章回覆於2018-04-25 11:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
我有試著改變 gridview2 去抓取 lebel1的值
若單一選取 是能成功的
但多選後 由於 無法斷點lebel值 變成 讀取不到內容


這部分的程式碼?
沒看到程式碼,無法告訴你問題在哪
^.^a

副程式碼時,也請附上您寫在什麼事件上


本篇文章回覆於2018-04-25 12:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

raylight
檢舉此回應
Label1 寫入值後台程式碼

前端 SqlDataSource

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

topcat
捐贈 VP 給 topcat 檢舉此回應
所以label中顯示的是如您預期的勾選項目嗎?

但多選後 由於 無法斷點lebel值 變成 讀取不到內容

這句話是什麼意思?

小喵的範例是以,來區隔,欄位因為是數字,所以where 條件是類似


如果您的條件欄位是文字,那麼SQL語法中的文字欄位,應該要類似以下這樣


^.^a
本篇文章回覆於2018-04-25 14:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

raylight
檢舉此回應
因為我是用空格
所以顯示出來是
D20509-1 D20513-1
中間用空格隔開
可能GRIDVIEW2 抓值 會變成yardcode="D20509-1 D20513-1"
所以抓不到資料
請問有辦法修正嗎??
本篇文章回覆於2018-04-25 14:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
您會這樣問
代表您對於SQL的語法很不熟
以下是對於Where IN的說明

建議找一本T-SQL的書籍,好好學一下

https://docs.microsoft.com/zh-tw/sql/t-sql/language-elements/in-transact-sql?view=sql-server-2017

看過後試試看
^_^
本篇文章回覆於2018-04-25 21:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

raylight
檢舉此回應

PKname=D20509
還是不懂 為何會出現 無效的資料行名稱 'D20509'
本篇文章回覆於2018-04-26 10:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應


想來,您的欄位『yardcode』他的『資料型態』應該是『字串吧』,假設是varchar(50)好了

假設,要找資料為『A』或者資料為『B』的資料,那麼Where的語法應該是什麼?

字串型態,應該用單引號『'』包住資料
很重要,也很基本

萬一沒有單引號,那麼SQL會怎麼解釋這一句?

他會解釋為:
符合
『yardcode』這欄位,他的內容與『A』這個『欄位』相同
或者
『yardcode』這欄位,他的內容與『B』這個『欄位』相同

回頭看看你的SQL語法組合出來的內容


知道為什麼了嗎?
^.^a

SQL語法是操作資料的基本
如果您的系統有資料庫的存取
那麼最基本的SQL語法該如何寫,很重要,要趕快補上相關知識

加油∼

^_^
本篇文章回覆於2018-04-26 12:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

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