當 DataGrid (或 GridView) 綁定 List<T>,若集合為 null 或空集合,預設行為只會顯示空白區域,連欄位表頭都不會出現。
// 原始寫法:可能回傳 null
var list = Pt_OrderWorkFlow_DAO.GetOrderWorkFlow(wfid, uid, 1);
if (list == null) list = new List<Pt_OrderWorkFlow>();
dgWaitList.DataSource = list;
dgWaitList.DataBind();
// 改良:DAO 直接保證回傳空 List
public List<Pt_OrderWorkFlow> GetOrderWorkFlow(...) {
using (var db = DatabaseHelper.GetDB()) {
var result = (from a in db.Pt_OrderWorkFlow
where a.WFID == wfID && a.ContractNumber == cNumber
select a).ToList();
return result.Count > 0 ? result : new List<Pt_OrderWorkFlow>();
}
}
若使用 GridView,可設定 ShowHeaderWhenEmpty="true" (ASP.NET 4.5+):
<asp:GridView ID="gvData" runat="server" ShowHeaderWhenEmpty="true" />
或在 RowDataBound 事件中手動建立 HeaderRow。