我遇到了與上述完全相同的問題here。不幸的是,因爲我沒有50分,所以我不能評論它,所以我必須創建一個新的重複問題。SPContext.Current.FormContext.OnSaveHandler不從自定義字段類型控件中觸發
我的意思是它不是「100%完全」像其他人的問題,因爲對我來說問題存在於編輯窗體上,我使用自定義窗體和字段的組合。但是我在現場級別添加了自定義保存事件處理程序,該處理程序是由該人在this網站所做的每個建議#2。我還應該注意到,當我創建一個沒有任何自定義表單或內容類型的新文檔庫並直接使用自定義字段時,事件處理程序也不會觸發。但是,如果我創建一個新的常規SharePoint列表並添加自定義字段,那麼OnSaveHandler會觸發!我所以我不太清楚它爲什麼在文檔庫中不起作用,但它在列表中起作用,因爲我覺得自定義字段的美妙之處在於它們獨立於其他所有東西運行。也就是說,即使我用我的Edit Form或其他控件做了些什麼,因爲我將自定義方法附加到我的自定義字段的OnInit方法中的SPContext.Current.FormContext.OnSaveHandler,那麼應該激發無論什麼!即使在第一次加載該字段時,我實際上也會看到事件在調試器中被連接起來。在調試模式下,我在下面的「if」語句旁邊有一個斷點,它會觸發該斷點,這意味着當FormContext.OnSaveHandler被觸發時,我的方法應該會觸發。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if ((SPContext.Current.FormContext.FormMode == SPControlMode.New) || (SPContext.Current.FormContext.FormMode == SPControlMode.Edit))
SPContext.Current.FormContext.OnSaveHandler += new EventHandler(MyHandler);
}
有什麼想法?建議?
謝謝!
更新#1:後一點疑難解答我是能夠推導出在我的自定義字段中的事件處理程序被解僱但在常規列表和不文檔庫使用時才!在常規的SharePoint列表中,不僅SPContext.Current.FormContext.OnSaveHandler被觸發,而且自定義字段的值也被保存。
請注意,將數據保存回繼承自SPFieldText的自定義字段時,值(即json數據)在列表視圖中顯示爲#VALUE!,我覺得有點奇怪。我的意思是它能夠正確讀取存儲在字段中的json數據,因爲它顯示在編輯表單中很好。但由於某些原因,SharePoint僅將其顯示爲#VALUE!列表視圖中的。