2015-04-28 28 views
0

我有一個Infopath表格,發佈到Sharepoint 2013,用戶使用人員選取器精確選擇一個人。在表單之外,我有列DisplayName和AccountID。我希望正在查看列表的用戶僅查看由他修改的,由他創建的對象,或者如果他被選中的對象。如何根據在Infopath表單中選擇的用戶過濾Sharepoint中的視圖?

試圖限制基於瀏覽器的視圖創建者的視圖很可能是不可能的,因爲外部可用的列都不是User類型。然後,我轉移到Sharepoint Designer 2013,並跳入CAML。這也沒有幫助。

如何檢查當前登錄的用戶是否與在表單中選擇的用戶相同?我嘗試使用CAML,但沒有效果(最後FieldRef是對列的引用,在這個例子中是AccountID)。

<Where> 
     <Or> 
      <Or> 
       <Eq> 
        <FieldRef Name="Editor"/> 
        <Value Type="Integer"> 
         <UserID Type="Integer"/> 
        </Value> 
       </Eq> 
       <Eq> 
        <FieldRef Name="Author"/> 
        <Value Type="Integer"> 
         <UserID Type="Integer"/> 
        </Value> 
       </Eq> 
      </Or> 
      <Eq> 
       <FieldRef Name="_638fe3aa_9161_4aa5_8bd1_862678d9fc06"/> 
       <Value Type="Integer"> 
         <UserID Type="Integer"/> 
       </Value> 
      </Eq> 
     </Or> 
    </Where> 

如果這可以從代碼InfoPath中來實現,或者以任何其他方式,答案也將被廣泛接受 - 我不想要的是基於CAML的答案,我想任何可行的回答我的問題:)

回答

0

對於要過濾設置爲[我]的每個列,視圖中的簡單過濾器應僅向用戶顯示與其自身相同的人員選擇器值。

如果表單中的字段是人員選擇器,那麼您必須將用戶數據存儲在某個列的某個列中,除非您在使用規則更新其他字段之後丟棄數據。如果是這樣的話,我不明白爲什麼你不能讓人員選擇器數據保存在你沒有顯示在視圖中的列中。您不必將過濾器設置爲您正在顯示的字段以使其正常工作,並且您已經使用正確類型的控件來獲取所需的數據。

創建者和修改者列總是用戶值。

+0

我現在無法檢查它,因爲我將繼續工作一週,但我確定人員選擇器不會創建'user'類型的列,而是具有三列類型的行的集合'string'。當試圖在外面顯示'selectedUser'時,InfoPath顯示,它將成爲選定值的計數器。儘管我沒有嘗試過,並且一回到工作崗位就會嘗試。 –

+0

完全可以將InfoPath人員選擇器保存到SharePoint中的個人/組列,事實上,如果要創建新列表並添加個人或組列,然後在InfoPath中編輯表單,這將是默認行爲。當您查看InfoPath中的用戶數據時,它似乎分解爲各種文本字段,但這正是InfoPath處理基礎對象的方式。 –

+0

經過兩次檢查,我必須說設置爲外部列後,列'Person'是int類型。正如我之前提到的那樣,這是反面的。 –

相關問題