時間緊,我的代碼在老大那測試沒有問題(他連的不是我的數據庫),而我也漸漸將這件事情丟到了一邊。一兩天後,新的任務來,需要在前面的基礎上,添加新的功能,結果我導出查,怎麼都找不出原因為什麼我這邊不該顯示的顯示出來了。我後來將問題定位到這張表格上,沒道理啊!所有字段都為<NULL>,為什麼一個都查不出來。找來老大,陳述我的問題,他在我展示表格數據的時候,瞄了一眼,搶過鼠標,在字段上點了兩下,然後問我:“看出毛病沒?”
我搖搖頭,他又點了點其他為<NULL>的字段,我才發現,當字段為<NULL>時,鼠標點上去,<NULL>會消失,而我輸入的"<NULL>"不會。這時,我才回憶起前幾天的情況——這個字段保存的值是"<NULL>"而不是NULL。
“Ctrl+0” 這就是讓字段為NULL的方法。
同樣,還有一個值得注意的問題是,如果你不小心將換行符,插入了數據庫。c#裡面是"\r\n"轉到sql腳本中,成了char(13)+char(10)(有興趣的朋友可以試一下,執行這條語句“insert into user(username) values(''a'' + char(13) + char(10) + ''b'')”),然後,你到預覽表格時候,將光標移動到該字段,摁上下方向鍵,就可以看到a與b交替出現了(數據庫得有user(username)表)。
而如果你將換行符接在字符串末尾,不注意的話,將始終得不到匹配的效果。
2. 日期格式化:我們經常會碰到這樣一個問題,數據庫保存的是DateTime對象,即保存了日期同時保存了時間,而我們顯示在DataGrid時,需要將時間去除,通常的做法是,在綁定時,ItemDataBind事件中,將該字段Convert.ToDataTime(),然後再ToString("yyyy-MM-dd"),這樣比較麻煩,你要做兩步,首先要判斷它為非頁眉和非頁尾:
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
而後做上述處理。而控件已經替我們做了這一步,只需要在控件中添加一個屬性即可:
<ASP:BoundColumn DataFIEld="RecTime" HeaderText="到貨日期" DataFormatString="{0:yyyy-MM-dd}"></ASP:BoundColumn>