none
「ユーザーまたはグループ」フィールドの初期値として現在のログインユーザーを表示するには? RRS feed

回答

  • ページごとのカスタマイズになりますがSharePoint Designer 2007でJavaScriptをコーディングすれば比較的簡単に実装できそうです。

    私はカスタムリストのNewForm.aspx を編集しました。

     

    まず、「ユーザーまたはグループフィールド」のオブジェクトを取得します。おそらくはここが一番のポイントだと思います。

    1. NewForms.aspx のContentPlaceHolderId属性が"PlaceHolderMain"となっているコンテント コントロール内に以下のコードを追加します。

      <script type="text/jscript">
      _spBodyOnLoadFunctionNames.push("getUserName");
      function getUserName()
      {
      var nameTags=document.getElementById("ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv");

      nameTags.innerHTML="<Userのログイン名>";
      }
      </script>

       

    2.  "ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv"の部分はご自身の環境に合わせて変更してください。、「ユーザーまたはグループフィールド」はNewForm.aspx のソースコード内では"Div"タグになっています。この Div タグの id を取得してください。なおソースコードは IE Developer Toolbar を使うと見つけやすいです。(IE Developer Toolbar ダウンロード: http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en)

     

    残る課題はユーザーのログイン名の取得ですが、とりあえずてっとり早く実装したかったので「ようこそ○○さん」の表示部分から取得してみたのが以下のコードです。

    コード ブロック

    <script type="text/jscript">
    _spBodyOnLoadFunctionNames.push("getUserName");

    function getUserName()
    {

    'ユーザー名を取得

    var loginNameTags= document.getElementById("zz7_Menu");
    var loginDisplayName=loginNameTags.innerText;

    var loginName=loginDisplayName.substring(4,loginDisplayName.lastIndexOf("さ",loginDisplayName.length));

     

    'フィールドにユーザー名を表示

    var nameTags=document.getElementById("ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv");

     

    nameTags.innerHTML=loginName;
    }
    </script>

     

    取り急ぎ、こんな感じはいかがでしょう。

    2008年1月20日 19:05

すべての返信

  • ページごとのカスタマイズになりますがSharePoint Designer 2007でJavaScriptをコーディングすれば比較的簡単に実装できそうです。

    私はカスタムリストのNewForm.aspx を編集しました。

     

    まず、「ユーザーまたはグループフィールド」のオブジェクトを取得します。おそらくはここが一番のポイントだと思います。

    1. NewForms.aspx のContentPlaceHolderId属性が"PlaceHolderMain"となっているコンテント コントロール内に以下のコードを追加します。

      <script type="text/jscript">
      _spBodyOnLoadFunctionNames.push("getUserName");
      function getUserName()
      {
      var nameTags=document.getElementById("ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv");

      nameTags.innerHTML="<Userのログイン名>";
      }
      </script>

       

    2.  "ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv"の部分はご自身の環境に合わせて変更してください。、「ユーザーまたはグループフィールド」はNewForm.aspx のソースコード内では"Div"タグになっています。この Div タグの id を取得してください。なおソースコードは IE Developer Toolbar を使うと見つけやすいです。(IE Developer Toolbar ダウンロード: http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en)

     

    残る課題はユーザーのログイン名の取得ですが、とりあえずてっとり早く実装したかったので「ようこそ○○さん」の表示部分から取得してみたのが以下のコードです。

    コード ブロック

    <script type="text/jscript">
    _spBodyOnLoadFunctionNames.push("getUserName");

    function getUserName()
    {

    'ユーザー名を取得

    var loginNameTags= document.getElementById("zz7_Menu");
    var loginDisplayName=loginNameTags.innerText;

    var loginName=loginDisplayName.substring(4,loginDisplayName.lastIndexOf("さ",loginDisplayName.length));

     

    'フィールドにユーザー名を表示

    var nameTags=document.getElementById("ctl00_m_g_3405cb6d_6769_4048_a928_ec0098015995_ctl00_ctl04_ctl01_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv");

     

    nameTags.innerHTML=loginName;
    }
    </script>

     

    取り急ぎ、こんな感じはいかがでしょう。

    2008年1月20日 19:05
  • ありがとうございますm(__)m
    やってみます!
    2008年1月22日 8:46
  • こんにちは。中川俊輔 です。

     

    山崎 愛さん、詳細なコード付きの大変参考になる回答ありがとうございます。

     

    けい2007さん、フォーラムのご利用ありがとうございます。

    問題解決に大変有効な回答のようでしたので、

    山崎 愛さんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    けい2007さんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年1月28日 6:01