1

先週、SharePoint 2010 で動作する SharePoint 2007 用に作成された単純な JavaScript コードを取得するためのヘルプを探していましたが、残念ながら自分の職場で使用できるという明確な答えが得られなかったため、自分で作成することにしました。オークション リストで、アイテムの有効期限が切れるまでの「残り時間」フィールドにカウントダウンがあると思われますが、何が問題なのかわかりません。私は javascript と sharepoint にはあまり慣れていませんが、経験豊富なプログラマーです。誰でもこれを手伝ってもらえますか?以下にコードを示します。

<script type="text/javascript">
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var lists = web.get_lists();
var listId = SP.ListOperation.Selection.getSelectedList();
var list = lists.getById(listId);
var item = getItemByName("End Date");
var end = Date.parse(item.text())/1000;
var todayNow = new Date();
todayNow = Date.parse(today)/1000;
var result = (end-todayNow);
var item2 = getItemByName("Time Left");
item2.text(result);
</script>

終了日はおそらく非表示になるフィールドですが、現在とアイテムの有効期限が切れるまでの違いを見つけるためのプレースホルダーとして使用されます。

返信ありがとうございます。

編集: わかりました、Robert に感謝します。本当に多くのことを助けてくれました。あなたの最後のコメントを見たとき、私はちょうどこれを投稿しようとしていました. 最初のコメントであなたが言ったことをグーグルで調査して以来、私は非常に親密になりました。

<

script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(getWebSiteData, "sp.js");
var context = null;
var web = null;
var lists = null;
var listId = null;
var list = null;
var item = null;
function getWebSiteData(){
context = new SP.ClientContext.get_current();
web = context.get_web();
lists = web.get_lists();
listId = SP.ListOperation.Selection.getSelectedList();
list = lists.getById(listId);
context.load(list, 'End Date');
context.executeQueryAsync(Function.createDelegate
(this, this.onSuccessMethod), Function.createDelegate
(this, this.onFailureMethod));
}
function onSuccessMethod(sender, args){
alert('web title:' + web.get_title() + '\n ID:' + web.get_id
());
}
function onFailureMethod(sender, args){
alert('request failed' + args.get_message
() + '\n' + args.get_stackTrace());
}
</script>

私がしなければならないことは、現在のアイテムを取得する方法を見つけて、その特定のアイテムの残り時間を設定できるようにすることだけだと思います。その方法を知っていますか?私は私が思うほど近くにいますか?ご協力いただきありがとうございます。

4

1 に答える 1

0

javascriptを使用してSharePointにアクセスするときは、ECMAクライアントオブジェクトモデルを使用しています。私は07のクライアントオブジェクトモデルを使用していませんが、'10の場合は使用しています。投稿したコードは、sp10では機能しないことがすぐにわかります。少なくともsp10comでは、SharePointオブジェクトの新しいインスタンス(list、web、listItem、columnなど)を取得するたびに、そのアイテムをローカルコンテキストに設定してから、非同期経由でサーバーに対してコンテキストをロードする必要があります。方法。その時点以降にのみ、必要な参照オブジェクトのフィールドにアクセスできます。あなたがそれを理解できないかどうか私に知らせてください。ここにいくつかのサンプルコードがあります:http://pastebin.com/3amgaEhv

編集:リストアイテムの更新については、このリンクを見つけました:http ://sprider.org/2011/12/13/sharepoint-ecmascript-to-adddeleteupdateget-list-items/

于 2012-08-23T21:06:39.603 に答える