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

作者: renmax (竹科學友哥)   2016-03-22 17:07:40
請輸入專案類型(網站專案或者應用程式專案):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
但依舊無效,是否有什麼地方是我沒有注意到的呢?
麻煩了,謝謝
作者: JohnYaEPen (醬也一篇)   2016-03-23 17:23:00
下次可以善用中斷點,一步一步找問題會比較快~哈至於比較簡單的寫法我也不知道你的簡單的定義是什麼@@你可以把一樣的sql拉出來外面定義,例如gv1sql = XXX最後Gv1.selectcommand = gv1sql然後寫一個帶參數的function 去設定gv1sqlfunction setsql(name, datefrom, dateto)indexchange就去call function可以省掉一些重覆的東西,不過實際狀況還是看你怎麼用但是我是建議你撈資料的東西寫在App_Code的class裡比較方便,其他支要用就不用再寫一次了
作者: renmax (竹科學友哥)   2016-03-23 16:51:00
類似於 member_id = @member_id 的意思找到原因了 因為在PageIndexChanging內沒抓到ddl的時間值不過 每個SUB內都要加上再抓DDL的日期 好像有點麻煩不知道有沒有比較簡單的寫法@@? 謝謝
作者: JohnYaEPen (醬也一篇)   2016-03-23 15:45:00
暫時沒看出什麼問題,你可以下中斷點,然後取出TSQL然後用那段語法直接進DB撈,看看有沒有資料另外我發現你SqlDataSource1的大小寫沒有一致唷,但我不確定 大小寫沒一致是不是會影響<asp:SqlDataSource ID="SqlDataSource1" >GridView1.DataSourceID = "Sqldatasource1"WHERE (member_id = ?) 這個是什麼意思@@?
作者: renmax (竹科學友哥)   2016-03-23 14:17:00
作者: JohnYaEPen (醬也一篇)   2016-03-22 17:38:00
你要再給一次sourcedatasource我是都寫function撈資料fill到datatable裡,在把dt給GV然後bind()你的用法我沒試過,或許你可以下中斷點看看,是不是在切頁撈資料的時候出問題,致使gv空白
作者: Ammenze (藍天白雲)   2016-03-23 08:46:00
在PageIndexChanging那邊下gridview.DataBind()
作者: renmax (竹科學友哥)   2016-03-23 10:25:00
加上GridView.DataBind()依舊無法 @@"寫function的話 是不是就要寫兩個 分別針對gv1和gv2呢?
作者: JohnYaEPen (醬也一篇)   2016-03-23 10:40:00
方便貼完整code在什麼地方嗎? sql可以不用

Links booklink

Contact Us: admin [ a t ] ucptt.com