2009-07-07 12 views
3

私はSharePoint(特にMOSS 2007)にカスタムリストを持っています.1つのフィールドは、「任意の欠陥?」というタイトルの「はい/いいえ」チェックボックスです。もう1つのフィールドは「閉鎖されました」で、チケットを閉鎖した人の名前です。別のフィールドの値に基づいて、SharePointリストフィールドのデフォルト値を設定するにはどうすればよいですか?

欠陥がない場合は、チケットを自動クローズします。存在する場合、 "Closed by"フィールドは後で記入する必要があります。

私は、このような「でクローズ」のための計算されたデフォルト値を設定でき考え出し:

=IF([Any defects?],"",[Me]) 

が、SharePointが、私はフィールドを参照した文句を。私はこれが理にかなっていると思います。新しいリストアイテムが最初にエントリ用に開かれ、いずれのフィールドにも値が存在しない場合、デフォルト値が起動されます。

計算されたフィールドを列の値に基づいて作成することは可能ですが、その場合は後でフィールドを編集することはできません。

私がやろうとしていることを達成するためのアドバイスはありますか?

リスト項目が保存された時点でコードを実行できる「OnSubmit」タイプのイベントを使用することはできますか?

ありがとうございます。

答えて

7

ページにコンテンツエディタWebパーツ(newform.aspx/editform.aspx)を含め、デフォルト値の設定を処理するためにjQuery(またはプレーンジャバスクリプト)を使用します。

編集:いくつかのサンプルコード:リストに

newform.aspxは、jQueryのへの言及を含みます。 htmlコードを見ると、各入力タグがフィールドのGUIDに基づいてIDを取得し、フィールドに設定されたタイトルが表示されることがわかります。あなたは、フィールドの内部GUIDを知っていれば

IDによる
$("input[title='DISPLAYNAMEOFFIELD']"); 

(、ダッシュがahveます:タイトルによって

今、jqueryのを使用して、我々は次のようにjQueryのセレクタを使用して、これらのフィールドで取得することができますアンダースコアで置き換えられる:

// 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 

私たちは、ドキュメントが完全に持っているときにすべてのコールのみが行われます、jQueryののready()機能でこれをラップロード:

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

これらの2を組み合わせることで、我々は今EndUserSharePoint.com上Use jQuery to Set A Text Field’s Value on a SharePoint Form記事が使用してフィールドのデフォルト値を設定する方法を示し、次の

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

JavaScriptを使用して埋め込む方法についてのアドバイスをいただきありがとうございます。 いくつかのサンプルコードで少しお困りのことはありますか?リスト内のフィールドをJavaScript変数として参照できますか? ありがとう! – DavidMWilliams

+0

編集を参照してください、いくつかのコードを提供 – Colin

+0

非常に感謝!私は15の評判のポイントを持っているときに戻ってあなたの答えを投票することが確実になります! – DavidMWilliams

1

にあなたのドロップダウンのonchangeイベントを設定することができますJavaScript/jQuery。

また、'taming calculated columns'には、jQueryを使用して計算フィールドのための多くの強力なオプションが表示されます。

JavaScriptをSharePointページに挿入してDOMを変更する際の注意点はサポートされています。将来のサービスパックが追加する機能を壊す可能性はわずかですが、次のバージョンのSharePointがそれを破る可能性は非常に高いです。しかし、この心を維持しながら、私はそれが現時点では良い解決策であると信じています。

私はそれはあなたが新しいイベントを作成するときに+ 1.5時間の時間をスタート終了時間/日付フィールドを設定します

を助けるかもしれサンプルコードで散歩を持って

+0

ありがとう、私は助けていただきありがとうございます。今すぐコードに戻って、私の意志でSharePointを折り曲げることについてもっと肯定的な気持ちになりました!私は15の評判があるときに私は戻ってアップアップします。 – DavidMWilliams

+0

Woohoo、私は今15人以上の担当者がいるので+1します:) – DavidMWilliams

0

時間と日付の作業を行うには少し複雑ですが、フォーム上の要素の検索方法の例と、使用しないでnewform.aspxにスクリプトを取得する方法の例が表示されますSPD。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"> 
</script> 
<script type="text/javascript"> 

    // Set the hours to add - can be over 24 
    var hoursToAdd = 1; 
    // Mins must be 0 or div by 5, e.g. 0, 5, 10, 15 ... 
    var minutesToAdd = 30; 

    // JavaScript assumes dates in US format (MM/DD/YYYY) 
    // Set to true to use dates in format DD/MM/YYYY 
    var bUseDDMMYYYYformat = false; 

    $(function() { 

    // Find the start and end time/minutes dropdowns by first finding the 
    // labels then using the for attribute to find the id's 
    // NOTE - You will have to change this if your form uses non-standard 
    // labels and/or non-english language packs 
    var cboStartHours = $("#" + $("label:contains('Start Time Hours')").attr("for")); 
    var cboEndHours = $("#" + $("label:contains('End Time Hours')").attr("for")); 
    var cboEndMinutes = $("#" + $("label:contains('End Time Minutes')").attr("for")); 

    // Set Hour 
    var endHour = cboStartHours.attr("selectedIndex") + hoursToAdd; 
    cboEndHours.attr("selectedIndex",endHour % 24); 

    // If we have gone over the end of a day then change date 
    if ((endHour/24)>=1) 
    { 
     var txtEndDate = $("input[title='End Time']"); 
     var dtEndDate = dtParseDate(txtEndDate.val()); 
     if (!isNaN(dtEndDate)) 
     { 
      dtEndDate.setDate(dtEndDate.getDate() + (endHour/24)); 
      txtEndDate.val(formatDate(dtEndDate)); 
     } 
    } 

    // Setting minutes is easy! 
    cboEndMinutes.val(minutesToAdd);  

}); 

// Some utility functions for parsing and formatting - could use a library 
// such as www.datejs.com instead of this 
function dtParseDate(sDate) 
{ 
    if (bUseDDMMYYYYformat) 
    { 
     var A = sDate.split(/[\\\/]/); 
     A = [A[1],A[0],A[2]]; 
     return new Date(A.join('/')); 
    } 
    else 
     return new Date(sDate); 
} 

function formatDate(dtDate) 
{ 
    if (bUseDDMMYYYYformat) 
     return dtDate.getDate() + "/" + dtDate.getMonth()+1 + "/" + dtDate.getFullYear(); 
    else 
     return dtDate.getMonth()+1 + "/" + dtDate.getDate() + "/" + dtDate.getFullYear(); 
} 

</script>