2010-03-17 68 views
1

我想在SharePoin列表中只有唯一值。爲了實現這一點,我可以使用'ItemAdding'事件處理程序,如下面的鏈接所述。SharePoint:唯一列值

http://weblogs.asp.net/vikram/archive/2008/12/24/sharepoint-using-event-handler-to-make-a-column-unique.aspx

現在我有一個疑問:假設兩個用戶嘗試添加列表項目列表中使用相同的列值(這需要獨特的價值)同時。兩個電話會同時觸發ItemAdding事件嗎?如果是這樣,則有可能在列中具有相同值的兩個項目。請確認。

+0

好吧,在我的應用程序中,我正在編程添加列表項在自定義頁面中的按鈕單擊操作。所以有一種可能是使用鎖定或互斥,以便一次只有一個線程可以創建列表項目,並且在創建項目之前,我可以檢查重複項目。這裏我再次懷疑:負載均衡的多服務器場景會發生什麼?我的意思是如果兩個請求在兩臺不同的服務器上運行,那麼它們可以並行執行。有沒有什麼機制可以在機器上實現同步? – Anoop 2010-03-18 06:14:07

回答

1

我認爲,這種方法只允許在列中具有半唯一值。也就是說,如果一切正常,它將是唯一的。但是,無法同時添加兩個項目的屬性(是的,可能會發生,因爲IIS Web服務器是多線程的)。因此,你可能會有重複的值。

解決方法 - 實施「ItemAdded」事件處理程序,並刪除新添加的項目(如果該項目的屬性與某個其他現有項目相同)。這當然很少發生。

0

如果你有足夠的併發用戶,這可能是一個問題,SharePoint可能不是正確的工具。如果該值是由用戶創建的,則兩個用戶同時添加相同的值的可能性非常小。如果它是自動生成的,你可能應該使用基於ID的東西,這已知是唯一的。

如果您擔心無論如何都有重複的可能性,只要確保可以編輯該字段,如果您最終導致重複導致問題。