【C#】如何在GridView binding 前,更改SQL 撈出來的資料?

  • 794
  • 0
  • C#
  • 2022-04-26

如何在GridView binding 前,更改SQL 撈出來的資料?

系統環境:
Windows 10、Visual Studio 2017

內容摘要:
在ASP.NET 中的GridView,相信是很多人常用到的元件。
經由設定精靈,就可以完成分頁、排序、CRUD... 等等,免除我們工程師很多的時間去刻Code。
而這陣子遇到有關GridView 相關的操作問題,在這邊做相關的紀錄。

排序時,無法依照RowDataBound 修改的內容排序

發生原因:
後來研究發現GridVioew 事件的順序如下:

  1. 觸發事件
  2. 下SQL撈資料
  3. 做排序或分頁
  4. 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