2011-01-21 34 views
0

在項目中,我目前正在研究,我必須爲給定列表(SharePoint 2007)創建個人列表視圖。這裏是我的代碼(currListSPList):僅通過「管理個人視圖」權限以編程方式創建個人列表視圖

System.Collections.Specialized.StringCollection viewFields = currList.Views[BaseViewID].ViewFields.ToStringCollection(); 
SPView searchView = currList.Views.Add(SearchViewName, viewFields, query, 100, true, false, Microsoft.SharePoint.SPViewCollection.SPViewType.Html, true); 

一切都工作正常時,用戶有權元素添加到列表中。爲用戶創建視圖,除了添加項目之外,對該列表擁有所有權限會導致「訪問被拒絕」錯誤。從SharePoint添加視圖本身的作品。

我在這裏發現了同樣的問題: http://us.generation-nt.com/security-issue-while-creating-personal-view-programmatically-help-86373652.html 所以這個問題並不新鮮。

//編輯: 如果我創建個人視圖(添加項目以列出和管理個人視圖權限),我可以稍後修改此視圖(從中刪除視圖等),只管理個人視圖。 有趣的是有趣的是我早先創建了這個個人視圖我可以修改這個視圖

+0

您能否確認 - 運行代碼的用戶是否有權創建和管理個人視圖? – Luke 2011-01-21 12:33:49

+0

是的,他有這個權限。 – 2011-01-21 15:51:42

回答

0

問題仍然存在於SharePoint 2010中。使用添加視圖管理個人視圖從代碼中是不可能的,但它可能來自UI。作爲新項目的解決方法我已經創建JS腳本:

  1. 負載創建視圖頁,隱框
  2. 填充視圖名稱
  3. 選擇「創建個人視圖」複選框
  4. 點擊按鈕
  5. 刪除幀

我正在使用jQuery來做到這一點。點擊按鈕會導致回傳,因此必須處理:

createPersonalView = function (callback) { 
    var url = siteCollectionUrl + '_layouts/ViewNew.aspx?List={' + listId + '}' 
     + '&Source=' + window.location.href; 

    $someDiv.append('<iframe class="view-creator" style="display:none;"></iframe>'); 

    $someDiv.find('iframe.view-creator').attr('src', url); 
    $someDiv.find('iframe.view-creator').load(function() { 
     var $iframe = $(this); 
     $iframe.contents().find('#ViewName').attr('value', "My personal view"); 
     $iframe.contents().find('input#PersonalView0').attr('CHECKED', 'true'); 

     $iframe.unbind('load'); 
     $iframe.load(function() { 
      $iframe.remove(); 
      callback(); //it's done! :D 
     }); 

     $iframe.contents().find('#onetidSaveItemtop').click(); 
    }); 
}; 

這樣做就足夠了。當你有查看的時候,它可以用更新管理個人視圖權限。

0

如果你知道從UI添加視圖的工作,你可以嘗試複製那裏發生的事情。

使用Firebug,你可以看到正在發生的事情,基本上ViewNew頁面提交到這個網址

http://server.local/_vti_bin/owssvr.dll?CS=65001&BaseViewID=1 
    &Cmd=NewView&ContentTypeId=0x&IsThereAQuery=FALSE 
    &List=%7BE30D413B-B7E9-47EB-9D69-BC1D3A76A3FD%7D&NewViewName=YourNewView 
    &Personal=TRUE 

但是有更多的參數。

如果你真的需要這個功能,你可以試試。

相關問題