2010-07-25 25 views
2

我有一個Formview綁定在代碼文件中的通用列表。現在,在編輯記錄時,我希望從ItemUpdating事件處理程序方法的FormViewUpdateEventArgs參數中訪問Keys和NewValues。使用手動數據綁定檢索Formview中的鍵和NewValue

從我試過並通過互聯網搜索截至目前,我已經知道,只有當Formview在標記頁面上設置了數據源控件時,更新後的值纔可用,否則它們將爲null 。這是真的?其次,在這一刻,我將sender對象轉換爲formview,並使用FindControl方法單獨填充每個對象屬性,以查找和檢索控件中存在的值。這是完成這項任務的最佳方式嗎?

作爲一個例子,這是我在做什麼大氣壓:

FormView currentForm = (FormView)sender; 
ListObject.ID = new Guid(((HiddenField)(currentForm.FindControl("hdnID"))).Value); 
ListObject.Name = ((TextBox)(currentForm.FindControl("txtName"))).Text; 

感謝您的幫助小夥子們!

+1

FindControl始終「不是最好的方式」去做事情,因爲它很昂貴。你應該真的使用它作爲最後的手段。在你的情況下,我認爲你應該考慮使用ObjectDataSource,而不是直接在你的代碼中綁定它 – 2010-11-01 18:25:51

回答

0

根據你在做什麼我會建議你不是使用FormView。 FormView在使用數據源時非常出色,但在處理手動綁定數據時會失敗,基本上覆蓋並手動構建表單,而且創建HTML表單和ASP.Net服務器端控件會更簡單。

FindControl是一個昂貴的操作,可以變得笨拙。在將數據循環到服務器端控件的過程中,簡單地分配值會更快。

或者如建議的那樣,使用ObjectDataSource並以這種方式將數據綁定到FormView。