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

質問
-
「ユーザーまたはグループ」フィールドの初期値として現在のログインユーザーを表示したいのですが、何か良い方法はないでしょうか?やはりカスタムフィールドを作るしかないでしょうか、、、↓のようなページがあったのですが、肝心の「note」のリンク先は今は無くなっています。2008年1月15日 16:35
回答
-
ページごとのカスタマイズになりますがSharePoint Designer 2007でJavaScriptをコーディングすれば比較的簡単に実装できそうです。
私はカスタムリストのNewForm.aspx を編集しました。
まず、「ユーザーまたはグループフィールド」のオブジェクトを取得します。おそらくはここが一番のポイントだと思います。
-
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> -
"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 を編集しました。
まず、「ユーザーまたはグループフィールド」のオブジェクトを取得します。おそらくはここが一番のポイントだと思います。
-
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> -
"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 -