2011-07-18 178 views
1

我目前正在部署一個包含發佈頁面的SharePoint解決方案。這些頁面允許用戶選擇「不更新修改日期」。
這是通過放置在頁面上的小控件來解決的。SharePoint - 不會更改更新時的修改日期

<ctrl:ModifiedFieldManager FieldName="Modified" runat="server" id="modifiedmanager"> 
</ctrl:ModifiedFieldManager> 

該控件創建用戶可以選中或不選中的複選框。
如果選中,修改的字段應保持不變。 控件派生自「BaseFieldControl」。上述

public override void UpdateFieldValueInItem() 
    { 
     base.EnsureChildControls(); 

     if (this.ModifiedFieldManagerBox.Checked) 
     { 
      this.Value = this.Item["Modified"]; 
      base.UpdateFieldValueInItem(); 
     } 
     else 
     { 
      this.Value = DateTime.Now; 
     } 
    } 

中的代碼負責檢查,如果寫「舊」修改日期回項目。

有關此代碼的有趣之處在於 - 如果我以管理員身份登錄,它將起作用。 作爲普通用戶,此代碼得到執行,但修改日期仍然是當前日期和時間。

任何人都可以給我一些建議如何爲普通用戶解決這個問題嗎?

Thx提前

史蒂夫

回答

0

通常,使用SystemUpdate爲了確保修改後的字段不上德SPListItem改變

更多信息

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.systemupdate.aspx

+0

你能扎入列表的事件處理並在那裏調用SystemUpdate? –

+0

然後,我必須將複選框的值保存在ContentType的某處,因爲那時我無法訪問該頁面的控件。 – Steve

+0

我剛剛發現,右側的「管理權限」對於用戶能夠覆蓋「更改」字段是必需的。 - 很奇怪 – Steve