1

リスト内の項目を更新する必要なしに毎日今日の日付を取得できるカスタム列を作成できるかどうかを知りたかったですか?sharepoint 2010:javascriptを使用したカスタム列

私の最終目標は、目的地の日付と今日の日付との間にどのくらいの時間が残っているか、それを超えているかを計算することです。

私は、このようなコードをページに隠し、何らかの形で計算された列を作成するときに日付divのinnerHTMLを参照することを考えました。

today = new Date();

D = today.getDate(); 
    M = today.getMonth() + 1; 
    Y = today.getYear(); 
    document.getElementById('date').innerHTML=D+"/"+M+"/"+Y; 

    <div id="date" style="display:none"></div> 

誰もこれを行うことができる方法についての考えを持っていますか?

+0

私の同僚は、私たちがうまくいかなかったいくつかの方法を説明したポストを書いています。これは助けになるかもしれません。 http://blog.pentalogic.net/2011/08/how-not-to-develop-a-sharepointtoday-calculated-column/ – Ryan

+0

私は解決の後、私の検索の間にこのページを見ました。彼が提供するアドオンを購入する以外の方法はないとは思っていません。特に問題にならないようにしてください。 – Jake

+0

私は彼が間違っていることを教えてくれるのを待っています、特にマイナーなものについて); 1つの考え方 - あなたのqを編集して、それをやろうとするよりも、達成しようとしていることを教えてください - 私は推測することができますが、わからないと思う - あなたのアプローチに近づける方法があるかもしれません。 – Ryan

答えて

3

あなたは、例えば、日付と今日の日付の間の日数を表示するには、列をカウントアップ/ダウンカウントを表示したいと述べました

タスクX | 2月20日の予定| 5日

中によりそのサーバー側のコードを確保することができないとしてあなたは、カスタム列で直接これを行うことはできません(ページビュー上で実行されます例えば、カスタムフィールドタイプコードが上で実行されません通常のリストビュー)、JavaScriptを使用することができます(カスタム列の有無にかかわらず)。あなたがここでの考え方を取るためにカスタム列とそれを組み合わせることができ

- :それはあなたの要件に合うように聞こえるChristophe of pathtosharepoint.com名声によって2を含む

このpost details 4 ways to get a countdown field working @Ivanのようにjavascriptのリファレンスを出力するか、CEWPを介してページにjavascriptを追加するだけです。

+0

ありがとうございましたあなたは正しい方向に私を指摘したと思います。 – Jake

2

あなたがあなた自身のフィールドタイプを作成し、このように、レンダリングのためにJavaScriptを設定することができます。

<FIELDTYPE>
...
< RenderPattern名= "DisplayPattern" >
<HTML> <! [CDATA [<スクリプト src = "/ _ layouts/MyDateTime.js" > </script >]]> </HTML >
<HTML> < [CDATA [<のdiv > <SCRIPT> GetCurrentTime(); "]] > </HTML >
<のdivのid =" 日付 "スタイル=" 表示!:なし "> </div >
<HTML> < [CDATA ["]; </SCRIPT > </divの>]]> </HTML >
</RenderPattern >
</FIELDTYPE >

次にレイアウトフォルダにGetCurrentTime関数の定義とMyDateTime.jsを置くとすれば完了です。宣言するカスタムフィールドの種類の詳細については以下を参照してくださいhttp://www.spsamples.com/2011/06/sharepoint-indicator-field-type.html

+0

あなたの答えはすばらしく思えるのは、私が問題を抱えている唯一のことは、どこでカスタムフィールドタイプを書くのですか?私はそれのためにビジュアルスタジオを使用する必要がありますか?またはSPデザイナーで十分ですか?私の質問がばかげていると、すみません。ただ、あなたが私に見せた方法でまだ経験はありませんでした。あなたはこれをどのように使用するかを詳しく説明するのに十分親切でお願いしますか?ありがとうございました。 – Jake

+0

カスタムフィールドタイプを作成するには、特別なxmlファイルを作成する必要があります。メモ帳でも行うことができます。フィールドタイプのマークアップを作成したら、fldtypes_MyFieldType.xml(fldtypes_から始まります - これがフィールドタイプ定義であることをSharePointが認識する方法)のように名前を付け、Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 14 \ TEMPLATE \ XMLディレクトリに移動します。 iisresetを実行すると、SharePointは新しいタイプを解析し、それを使用できます。フィールドの種類のマークアップの例については、この記事を参照してください。http://msdn.microsoft.com/en-us/library/gg132914.aspx –

+0

カスタムフィールドクラスを実装する必要はありません。標準フィールド型のクラスを継承するには十分です(テキストフィールドなど) –

2
Include a content editor web part in the page (newform.aspx/editform.aspx) and use jQuery (or just plain JavaScript) to handle the setting of default values. 

Edit: some example code: 


In the lists newform.aspx, include a reference to jquery. If you look at the html code, you can see that each input tag gets an id based on the field's GUID, and a title that's set to the fields display name. 


now, using jquery we can get at these fields using the jQuery selector like this: 

By title: 


$("input[title='DISPLAYNAMEOFFIELD']"); 

by id (if you know the field's internal guid, the dashes will ahve to be replaced by underscores: 

// example field id, notice the guid and the underscores in the guid ctl00_m_g_054db6a0_0028_412d_bdc1_f2522ac3922e_ctl00_ctl04_ctl15_ctl00_ctl00_ctl04_ctl00_ctl00_TextField 

$("input[id*='GUID']"); //this will get all input elements of which the id contains the specified GUID, i.e. 1 element 


We wrap this in the ready() function of jQuery, so all calls will only be made when the document has fully loaded: 


$(document).ready(function(){ 
// enter code here, will be executed immediately after page has been loaded 
}); 


By combining these 2 we could now set your dropdown's onchange event to the following 


$(document).ready(function(){ 
$("input[title='DISPLAYNAMEOFFIELD']").change(function() 
{ 
     //do something to other field here 
}); 
}); 
+0

デフォルト値の設定 - OPの質問はどのように解決されますか? – Ryan

+0

私はこれと同じ方法を見たと思う:http://sympmarc.com/2009/05/20/pre-filling-column-values-in-a-sharepoint-form/私はそれを試みたが、それはしなかった本当にうまくいきます。:( – Jake

関連する問題