2010-02-05 31 views
0

我對LoginView控件有些熟悉,並且瞭解如何使用它來創建只讀版本和編輯一個頁面版本。如果您處於「讀者」角色或您被授予「編輯者」角色成員資格,該頁面將顯示不同的值。 工程很好!用於定製邏輯的LoginView

現在,如果例如editor1打開窗體並開始更新特定的數據對象......我認爲如果試圖通過頁面訪問同一對象的所有其他編輯器角色成員將顯示在當editor1仍然打開時,只讀模式。 其他編輯器打開的任何其他對象都應該以編輯模式打開。

因此,我正在考慮根據您嘗試顯示的對象來扮演角色成員。

某人會怎麼做這樣的事情?

謝謝! Ralf

回答

1

這並不容易,一次只有一個用戶編輯一條記錄。您將不得不:

  • 登錄數據庫,用戶正在編輯記錄。
  • 使用Web服務經常檢查此狀態。

我不相信有一種方法可以使它完美,當用戶在其他用戶訪問時立即被鎖定......這將是棘手的。

或者,您可以具有衝突解決功能,您可以在其中執行諸如比較原始值之類的內容,並查看其他用戶是否更改了這些原始值。如果他們這樣做了,那麼可以合併任何更改,或者可以提示用戶決定要做什麼或類似的事情。

HTH。

+0

你好,謝謝你的回答。 我想我沒有說得那麼清楚,我並不是想要檢查「always」和「sniff」的變化。 我想要做的是,當編輯器1打開表單爲他所在的對象設置一個標記,然後當編輯器2進入找到標記並將其移動到另一個角色,然後處理「can 't編輯'功能。 歸結爲:在ASP.NET頁面創建生命週期中,哪裏可以爲等待頁面的用戶交換角色?我嘗試了很多,從Button_click到Page_Load,甚至是Page_PreInit ......但似乎是爲了安全更改而遲到。 – Ralf

+0

我個人建議不要使用安全性;我會考慮使用MultiView來做到這一點。您可以通過設置activeviewindex屬性來在視圖之間進行編程切換,以完成您想要的操作。這比使用基於角色的安全性要容易得多。另外,您可以在代碼隱藏中執行任何安全檢查,以確保只有正確角色的編輯選項纔會顯示。至於檢查,是的,基本上你會做很多更新來設置和打開標誌。 –