[.NET] GridView+SqlDataSource的分頁問題

看板Visual_Basic作者 (竹科學友哥)時間8年前 (2016/03/22 17:07), 8年前編輯推噓9(9023)
留言32則, 3人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案):VB.net VS2015 各位版友好 我使用DropDownList1、GridView1、GridView2加上SqlDataSource來製作這次的專案 首先,在DropDownList1_SelectedIndexChanged內 SqlDataSource1.SelectCommand = "SELECT ........ GROUP BY .... " GridView1.DataSourceID = "Sqldatasource1" 接著,在GridView1_SelectedIndexChanged內 SqlDataSource2.SelectCommand = "SELECT ..... order by date" GridView2.DataSourceID = "Sqldatasource2" 另外,也使用了<asp:CommandField ShowSelectButton="True" /> 最後,希望按下GridView1的按鈕後,會顯示GridView2 但是按下第二頁(不管是GridView1或GridView2)時,GridView都會消失,無法顯示內容 雖然有在GridView1_PageIndexChanging和GridView2_PageIndexChanging內 有加上GridView1.PageIndex = e.NewPageIndex GridView2.PageIndex = e.NewPageIndex 但依舊無效,是否有什麼地方是我沒有注意到的呢? 麻煩了,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.21.87 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1458637663.A.FB0.html ※ 編輯: renmax (61.216.21.87), 03/22/2016 17:08:02

03/22 17:38, , 1F
你要再給一次source
03/22 17:38, 1F

03/22 17:39, , 2F
datasource
03/22 17:39, 2F
您好 我有試著將 SqlDataSource2.SelectCommand = "SELECT ..... order by date" GridView2.DataSourceID = "Sqldatasource2" 放在GridView2_PageIndexChanging內,但依舊無法顯示出第二頁內容 ※ 編輯: renmax (61.216.21.87), 03/22/2016 17:43:09

03/22 18:44, , 3F
我是都寫function撈資料fill到datatable裡,在把dt給G
03/22 18:44, 3F

03/22 18:44, , 4F
V然後bind()你的用法我沒試過,或許你可以下中斷點看
03/22 18:44, 4F

03/22 18:44, , 5F
看,是不是在切頁撈資料的時候出問題,致使gv空白
03/22 18:44, 5F

03/23 08:46, , 6F
在PageIndexChanging那邊下gridview.DataBind()
03/23 08:46, 6F

03/23 10:25, , 7F
加上GridView.DataBind()依舊無法 @@"
03/23 10:25, 7F

03/23 10:36, , 8F
寫function的話 是不是就要寫兩個 分別針對gv1和gv2呢?
03/23 10:36, 8F

03/23 10:40, , 9F
方便貼完整code在什麼地方嗎? sql可以不用
03/23 10:40, 9F

03/23 14:17, , 10F
03/23 14:17, 10F

03/23 14:17, , 11F
03/23 14:17, 11F

03/23 15:45, , 12F
暫時沒看出什麼問題,你可以下中斷點,然後取出TSQL
03/23 15:45, 12F

03/23 15:45, , 13F
然後用那段語法直接進DB撈,看看有沒有資料
03/23 15:45, 13F

03/23 15:49, , 14F
另外我發現你SqlDataSource1的大小寫沒有一致唷,但我
03/23 15:49, 14F

03/23 15:50, , 15F
不確定 大小寫沒一致是不是會影響
03/23 15:50, 15F

03/23 15:52, , 16F
<asp:SqlDataSource ID="SqlDataSource1" >
03/23 15:52, 16F

03/23 15:53, , 17F
GridView1.DataSourceID = "Sqldatasource1"
03/23 15:53, 17F

03/23 15:58, , 18F
WHERE (member_id = ?) 這個是什麼意思@@?
03/23 15:58, 18F

03/23 16:51, , 19F
類似於 member_id = @member_id 的意思
03/23 16:51, 19F

03/23 16:57, , 20F
找到原因了 因為在PageIndexChanging內沒抓到ddl的時間值
03/23 16:57, 20F

03/23 16:58, , 21F
不過 每個SUB內都要加上再抓DDL的日期 好像有點麻煩
03/23 16:58, 21F

03/23 16:59, , 22F
不知道有沒有比較簡單的寫法@@? 謝謝
03/23 16:59, 22F

03/23 17:23, , 23F
下次可以善用中斷點,一步一步找問題會比較快~哈
03/23 17:23, 23F

03/23 17:23, , 24F
至於比較簡單的寫法我也不知道你的簡單的定義是什麼@@
03/23 17:23, 24F

03/23 17:24, , 25F
你可以把一樣的sql拉出來外面定義,例如gv1sql = XXX
03/23 17:24, 25F

03/23 17:25, , 26F
最後Gv1.selectcommand = gv1sql
03/23 17:25, 26F

03/23 17:26, , 27F
然後寫一個帶參數的function 去設定gv1sql
03/23 17:26, 27F

03/23 17:27, , 28F
function setsql(name, datefrom, dateto)
03/23 17:27, 28F

03/23 17:27, , 29F
indexchange就去call function
03/23 17:27, 29F

03/23 17:27, , 30F
可以省掉一些重覆的東西,不過實際狀況還是看你怎麼用
03/23 17:27, 30F

03/23 17:30, , 31F
但是我是建議你撈資料的東西寫在App_Code的class裡
03/23 17:30, 31F

03/23 17:30, , 32F
比較方便,其他支要用就不用再寫一次了
03/23 17:30, 32F
文章代碼(AID): #1MyGjV-m (Visual_Basic)
文章代碼(AID): #1MyGjV-m (Visual_Basic)