我的GridView時間很糟糕。我一直在用細齒梳去檢查我的代碼,找不到問題。爲什麼我的GridView間歇性地不顯示我的.net TemplateFields
我有一個ASP.net GridView有七列;數據來自SQL。兩列保存JavaScript,用戶可以點擊刪除或修改數據庫中的條目。其他五個字段包含數據庫中人員的姓名,電話號碼和電子郵件地址。
我的四個字段是ASP.net TemplateFields。
頁面加載時,所有內容都正確顯示。但是,如果用戶單擊JavaScript鏈接,單擊按任意字段對GridView進行排序,或執行任何其他導致回發的操作,則生成的頁面可能不會顯示我的TemplateFields的內容;他們都是空白的。
只是讓你可以看到我的工作,我有這樣定義一個「名稱」欄:
<asp:TemplateField HeaderText="Name" SortExpression="name" ItemStyle-Width="150">
<ItemTemplate>
<%#(string)Eval("surname") + ", " + (string)Eval("fname") %>
</ItemTemplate>
</asp:TemplateField>
如果我踩通在調試器的代碼,我看到,在在模板字段正確顯示的情況下,調試器停在顯示名稱的行上。在字段全部爲空的情況下,它跳過代碼以顯示這些字段的內容;並且永遠不會有任何理由。
似乎會導致問題的唯一情況是,從查詢字符串(它告訴頁面要加載的數據)中設置了一個枚舉值。當枚舉值設置爲1時,我從來沒有看到這個錯誤,但是當枚舉值設置爲2時,我總是看到它。
但是,在我的gridview代碼中,任何地方都不會引用enum。
無論如何,總是調用GridView.DataSource = x並始終調用GridView.DataBind()。我嘗試通過代碼來檢查數據庫中的數據是否正確。我試過在調用DataBind的代碼塊以及GridViewRow_DataBound事件處理程序上進行調試。
我已經看到其他職位在有關TemplateField的麻煩,但他們似乎沒有解決這裏發生了什麼。
任何想法?
請驗證您是否綁定了GridView,每次回發時數據源都充滿了數據,而不是空的。 – sam 2010-12-08 10:00:48