1

これを行う方法の答えを探しているブログでいくつかの推奨される方法を見つけましたが、SharePoint MOSS 2007 と SharePoint Designer 2007 を使用してそれらをうまく機能させることができませんでした.

サイト コンテンツ タイプ内でユーザーに見せたくないフィールド (これらのフィールドは SharePoint Designer ワークフローによって設定されています) を既に非表示にしています。

現在のユーザーが特定の SharePoint グループに属しているかどうかに基づいて、NewForm.aspx および EditForm.aspx の特定のフィールドを非表示にしようとしています。リストには、作成したサイト コンテンツ タイプとサイト列があります。

Designer で NewForm.aspx を見ると、デザイン ビューには、特定のコンテンツ タイプではなく、一般的なフィールド 1、2、3 が表示されます。新しい aspx ページを作成し、SharePoint コントロール > カスタム リスト フォームを挿入すると、フィールドが表示されます。デザイナーがあれば、デザイナーで編集する方法をとりますが、以下の解決策を確認して、私がどこを台無しにしているかを理解するのを手伝ってくれる人が必要です.

jquery (1.9.0.js) と SPServices (0.7.2.min.js) を使用することを示すオプションを使用しました。

  1. 両方のファイルを自分のサイトのドキュメント ライブラリにアップロードしました。

  2. 次に、NewForm.aspx ページに CEWP を作成しました (デザイナーではなく、URL に "shared&ToolPaneView=2" を追加してフロントエンドを使用)。

  3. 次のコードを CEWP に貼り付けます。

"

<script type="text/javascript" language="javascript" src="/Style%20Library/JavaScript%20Utilities/jquery.SPServices-0.7.2.min.js"></script>

<script language="javascript" type="text/javascript">

$(document).ready(function() {

  $().SPServices({

    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
       completefunc: function (xData, Status) {
       var xml = xData.responseXML.xml;
       if (xml.search('MyGroupName') != -1)

function hidefields() {

         var control = findacontrol("MyColumnName");
         control.parentnode.parentnode.style.display="none";
  }
     }
  });
});
</script>

[ソース エディタ] ダイアログ ボックスで [保存] をクリックすると、ダイアログ ボックスが閉じて、メイン ブラウザのステータスに「スクリプトが読み込まれるまでお待ちください...」というメッセージが表示された後、何も起こりません。[共有 Web の変更] で [OK] をクリックできます。パーツ メニューと Web パーツが閉じます。同じ待機メッセージを取得します...

目標は、現在のユーザーが MyGroupName の一部でない場合、MyColumnName のフィールドがページに表示されないようにすることです。開発者ではありませんが、実生活でプレイしようとしています。

まだ読んでいるなら、ありがとう!!!

4

2 に答える 2

0

使用する : if (xml.search('Group Name') == -1) { //Hide the controls }

完全な実装については、ユーザー権限に基づいて SharePoint リストの列を非表示にするを参照してください。

于 2013-07-16T08:38:18.270 に答える
0

あなたが提供したスクリプトは機能しません。確認したところ、<script />jQuery と SPServices の宣言が含まれていましたか? ページの読み込み中に発生したスクリプト エラーがブラウザに表示されますか? スクリプト ファイルを正しく参照しなかったために、404 が発生することがあります。

また、xml.search('MyGroupName')成功した場合は、新しい関数を宣言します。関数を宣言するだけでなく、関数を呼び出したいと思われます。ただし、jQuery には、実行しようとしている操作の種類に役立つ省略表現がいくつか用意されています。たとえば、「MyColumnName」が列の ID である場合、次のようなことができます。

<script type="text/javascript" language="javascript" src="/Style%20Library/JavaScript%20Utilities/jquery.SPServices-0.7.2.min.js"></script>

<script language="javascript" type="text/javascript">

$(document).ready(function() {

  $().SPServices({

    operation: "GetGroupCollectionFromUser",
    userLoginName: $().SPServices.SPGetCurrentUser(),
    async: false,
    completefunc: function (xData, Status) {
      var xml = xData.responseXML.xml;
      if (xml.search('MyGroupName') != -1) {
        $("#MyColumnName").parent().parent().hide();
      }
    }
  });
});
</script>

'MyColumnName' がid検索しようとしている要素のものでない場合、非表示にする要素を一致させる別の方法があります。jQuery.com、特に代替のjQuery セレクターをご覧ください。

于 2013-05-22T01:31:50.877 に答える