SharePoint 2010リストで許可されるエントリの数を制限しようとしています。このリストはユーザーがサインアップするためのもので、たとえばこれを60に制限します。私は同様の質問を見てきましたが、どれもうまくいかないようです。SharePointリストに入力できるアイテムの数を制限する方法は?
これまでに見つかった検証式はどれも適切ではありませんでした。私はこれに関するアドバイスと助けに感謝します。
ありがとうございました! :)
SharePoint 2010リストで許可されるエントリの数を制限しようとしています。このリストはユーザーがサインアップするためのもので、たとえばこれを60に制限します。私は同様の質問を見てきましたが、どれもうまくいかないようです。SharePointリストに入力できるアイテムの数を制限する方法は?
これまでに見つかった検証式はどれも適切ではありませんでした。私はこれに関するアドバイスと助けに感謝します。
ありがとうございました! :)
これを実現するための組み込み機能はありません。ただし、エントリを作成するための独自のインターフェイス(カスタムサインアップページなど)を提示すると、動作が制御され、制限に達した後にサインアップが防止されます。
まず、JavaScriptオブジェクトモデルを使用してリストをクエリし、アイテムを作成する前にアイテム数を検出する例を示します。
<input type="button" value="Sign Up Now!" onclick="createItemIfBelowLimit()" />
<script>
function createItemIfBelowLimit(){
var max = 60;
var listTitle = "Your List Title";
var clientContext = new SP.ClientContext();
var list = clientContext.get_web().get_lists().getByTitle(listTitle);
clientContext.load(list);
clientContext.executeQueryAsync(function(){
var itemCount = list.get_itemCount();
if(itemCount < max){
createItem(listTitle,{
"Title":"Example title text",
"Body":"Example body text"
});
}else{
alert("This sign-up list is full. Sorry!");
}
},function(sender,args){
alert(args.get_message());
});
}
function createItem(listTitle,values){
var clientContext = new SP.ClientContext();
var list = clientContext.get_web().get_lists().getByTitle(listTitle);
var newItem = list.addItem();
for(var key in values){
newItem.set_item(key,values[key]);
}
newItem.update();
clientContext.load(newItem);
var rootFolder = list.get_rootFolder(); // Note: use a list's root folder to determine its server relative URL
clientContext.load(rootFolder);
clientContext.executeQueryAsync(function(){
var itemId = newItem.get_item("ID");
SP.UI.ModalDialog.showModalDialog(
{
title: "Item #"+itemId+" Created Successfully!",
url: rootFolder.get_serverRelativeUrl() + "/DispForm.aspx?ID="+itemId
}
);
},function(sender,args){
alert(args.get_message());
});
}
</script>
上記のコードを使用するには、まずテキストファイルに保存し、SharePointサイトのライブラリにアップロードします。その後、サイトにページを作成し、コンテンツエディタWebパーツをページに追加し、そのコンテンツエディタWebパーツのWebパーツプロパティを編集することができます。 [コンテンツリンク]プロパティで、テキストファイルへのリンクを貼り付けます。これにより、WebパーツでHTMLとJavaScriptがレンダリングされます。
詳細については、マイクロソフトが提供するCommon Programming Tasks in the JavaScript Object Modelのドキュメントを参照してください。