1

SharePointのリストまたはドキュメントライブラリ内の[新規]/[アクション]/[アップロード]/[設定]メニューを非表示にするにはどうすればよいですか?すべてのリストやドキュメントライブラリだけでなく、特定のリスト定義(テンプレート)のこれらのメニューを非表示にできる必要があることに注意してください。

私が知っている1つの可能な方法は、を登録し、ControlClass要素をWebControlから継承するコントロールに設定することです。WebControlでは、OnPreRenderをオーバーライドできます。これにより、次のことが実行されます。

foreach (Control control in this.Parent.Controls)
{
    if (control.ToString() == "Microsoft.SharePoint.WebControls.NewMenu")
    {
        control.Visible = false;
    }

    // etc
}

これはかなりハッキーです、そして私はそれをするより良い方法があるかどうかと思っていましたか?

4

4 に答える 4

1

これは、SharePoint 2007 Features Codeplex プロジェクトの一部である Toolbar Manager Web パーツを使用して実現できます。 http://features.codeplex.com/

各ビューの Web ページに Web パーツを追加する必要がありますが、コーディングせずにメニュー項目を非表示にすることができます。

一部のユーザーがメニュー項目を必要とする場合は、個人用ビューを追加する権限を付与してください。個人用ビューを作成すると、Web パーツは既定ではインストールされません。同様に、メニュー項目にアクセスしてはならないユーザーの個人用ビューを禁止する必要があります。

于 2010-10-01T13:47:38.193 に答える
0

リストに非表示でないコンテンツ タイプがない場合、[新規] ボタンは自動的に非表示になります。

于 2010-05-17T11:12:35.877 に答える
0

おそらく JavaScript が最適なオプションです。マスター ページで次のコードを変更して参照するだけです。

hideListViewToolbarItems("list settings","document library settings","create column","open with windows explorer");

function hideListViewToolbarItems()
{      
    var menuItem;         
    var menuItemName;
    var menuItemIndex=-1;
    var menuItemNames=new Array("edit in datasheet","open with windows explorer",
    "connect to outlook",'export to spreadsheet','view rss feed','alert me'
    ,"create column","settings:create view","list settings",
    "document library settings","explorer view","all documents",
    "all items","modify this view","view:create view","new document",
    "new item","new folder","upload document","upload multiple documents");
    var menuItems = new Array("EditInGridButton","OpenInExplorer","OfflineButton",
    "ExportToSpreadsheet","ViewRSS","SubscribeButton","AddColumn",
    "AddView","ListSettings","ListSettings","View1","DefaultView",
    "DefaultView","ModifyView","CreateView","New0","New0",
    "NewFolder","Upload","MultipleUpload");              
    var allMenuItems = document.getElementsByTagName('ie:menuitem');
    for(var i = 0; i < hideListViewToolbarItems.arguments.length; i++ ) 
    {                                                                           
          menuItemName= hideListViewToolbarItems.arguments[i].toLowerCase();
          for (j=0; j < menuItemNames.length; j++)
          {
               if(menuItemNames[j]==menuItemName)
               {                                     
                     menuItemIndex = j;
                     break;
               }
          }           
          menuItem=menuItems[menuItemIndex];
          for (var l = 0; l < allMenuItems.length; l++)
          {                  
               if(menuItemName.indexOf(":")!=-1)
               {
                         menuItemName = menuItemName.split(":")[1];
               }
               if (allMenuItems[l].id.indexOf(menuItem)!=-1 
                && allMenuItems[l].text.toLowerCase() == menuItemName )
               {                  
                     // For FireFox Compatibility
                     var parentNodeOfMenuItem = allMenuItems[l].parentNode;
                     parentNodeOfMenuItem.removeChild(allMenuItems[l]);
               }
          }                  
    }
}
于 2009-07-22T16:09:11.560 に答える
0

ボタンを非表示にするブログエントリをここに書きました。それが役に立てば幸い。

于 2009-11-13T02:52:32.430 に答える