記錄一下今天解決的一個需求,GridView在頁面上用SqlDataSource控件配置數據源直接綁定,不用後臺代碼動態綁定,而後爲了方便插入數據,在參考了各位大佬的博文後,採用了在字段的腳註行裏插入文本框控件,收集各列的數據,而後在後臺用SqlDataSource的插入參數配置以後,直接insert方法完成新記錄的入庫。框架
理想是美好的,但現實老是有點扭曲。這個新記錄插入方法在數據源有數據的時候很好使,由於只要設置了showfooter=true,腳註行就能顯示。可是若是沒數據的時候,腳註行就消失了,這簡直就是反人類啊,明明沒數據纔是最須要你出現的時候,但你恰恰消失了。並且表頭有個ShowHeaderWhenEmpty屬性能夠解決無數據顯示錶頭的問題,恰恰沒有對應的showFooterWhenEmpty來解決無數據顯示腳註行的需求。事件
因而又參觀了幾個大牛的相關問題的博文,發現他們要麼是動態綁定數據源,監測數據條數爲0就自動插入一個空白新行,把無數據變成有數據,以此來解決需求。但本着能偷懶就不寫後臺代碼的原則,這個方法就無法套用了。另外還有一個方法也有點相似,可是能保持數據源仍是aspx頁面裏配置的,有點偷樑換柱意思,就是在PreRender裏檢查是否有數據,沒有數據就用一個一樣列框架的DataTable插入一個空行並替換掉SqlDataSource,最終使GridView變成有數據;但這個替換還要有個還原的操做,在Page_Load裏,每次都要把SqlDataSource設置回來,否則數據源就不統一了。這個方法的確也能解決問題,但設置太複雜。模板
由於實在沒有更好地偷懶的方法了,因此本身研究了一下,思路都差很少,要想讓Footer模板顯示,惟一的方式就是在SqlDataSource無數據時,可以插入一個空行,這就變成有數據了,天然就能顯示Footer了。上面幾種方式的思惟都是正向的,在發現沒數據時纔想盡辦法插一條,但惋惜GridView和SqlDataSource都不能手動加空白數據,因此只能更換數據源。因而我乾脆來個逆向思惟,爲何不能在SqlDataSource查詢數據的時候就直接加一個空行進來呢?因此到這裏,一切問題都解決了,只須要在SqlDataSource的查詢SQL裏用UNION整合一條空白數據進來便可,完美解決無數據而造數據的問題。後臺
具體代碼就不寫了,核心思路就是從數據源頭保證至少會有一條空數據存在,這樣在GridView裏空白數據顯示的只是末行的空白而已,無傷大雅,而Footer行也能自動出現了。若是你有強迫症或者數據列裏有控件,顯示出來不優雅,不要緊,也容易解決,在行數據綁定的事件裏檢查一下當前數據行是否是鍵值爲空,是就讓當前行的Visible=false就行了。配置