如何在GridView binding 前,更改SQL 撈出來的資料?
系統環境:
Windows 10、Visual Studio 2017
內容摘要:
在ASP.NET 中的GridView,相信是很多人常用到的元件。
經由設定精靈,就可以完成分頁、排序、CRUD... 等等,免除我們工程師很多的時間去刻Code。
而這陣子遇到有關GridView 相關的操作問題,在這邊做相關的紀錄。
排序時,無法依照RowDataBound 修改的內容排序
發生原因:
後來研究發現GridVioew 事件的順序如下:
- 觸發事件
- 下SQL撈資料
- 做排序或分頁
- RowDataBound
因為排序是在RowDataBound 之前發生,所以沒辦法依照你在事件內變更的內容去做排序。
解決辦法:不要讓精靈去幫你做撈資料、資料繫結的動作,而是自己在觸發事件中,藉由程式將更改好的資料繫結到Grid 上
2022-04-26 後記
現在回來看這個紀錄,可以分析出的問題是
為何需要修改資料庫撈出來的資料?
Grid 顯示出來的資料就應該是資料庫的資料,還需要修改是不是資料庫設計不好 ?
如果真的是需要進行動態計算的substring 或diff date,可以考慮下SQL 的時候一起做掉
或是不用精靈自動撈資料,導入MVC 概念
自己在後端定義Read 方法撈出資料(C)、加工成ViewModel(M)
分工做好各自的事情
相關連結:
https://stackoverflow.com/questions/15829079/how-to-bind-dataset-with-gridview