2016-07-19 13 views
0

すべて、SharePoint 2010の最後の5分間に作成されたアイテムの条件付き書式設定

私は一日中探していて、数多くの解決方法を試しましたが、うまく動作しません。私たちのチームは常に更新されているリストをプロジェクトし、新しく作成されたアイテムのみを5分間ハイライトしたいと考えています。 5分後、行は正常に戻ります。 (リストはディスプレイに投影され、15秒ごとにAJAX非同期更新を使用して更新されます)

基本的に、私は最後の5分間に作成されたリスト項目に条件付き書式を設定します。アイテムが最後の5分間に作成された場合は、行が強調表示されます。 5分が経過すると、その行は正常に戻ります。

"Created + 5"という日付/時刻形式の計算列を作成し、 "作成済み+ 5"が大きい場合に書式設定が適用される(行が強調表示される)式を設定しようとしましたが、現在の日付よりも前または等しい。だから、ここで

5分後に(現在の日付/時刻が「作成さ+ 5」の値を超えてしまいますので)、行はもはや強調表示されませんがSPD高度な条件ビルダからの発現である:

ddwrt :DateTimeTick(ddwrt:GenDisplayName(文字列($ thisNode/@ Created_x0020__x002b__x0020_5_x)))> = ddwrt:DateTimeTick(ddwrt:GenDisplayName(文字列($今日)))

私は問題は、[現在の日ということだと思います]オプション(式ビルダーの$ Today)は、時間ではなく日付のみを扱います。これは今日作成されたすべてのものを強調表示するようになっているように見えますが、これはあまり有用ではありません。

どのような考えや助け!?私は基本的なものが私のために正常に動作するので、高度な条件を混乱させたことはありません!誰かがJavaScriptやそれ以外の何か他のアイデアを持っていれば、私はそれが継続的に更新される限り、それを公開しています!

ありがとうございます!!!!

答えて

0

2010年に[今日]は実際には正しく動作しませんが、いくつかの回避策があります。 https://abstractspaces.wordpress.com/2008/05/19/use-today-and-me-in-calculated-column/。あなたはまた、計算列でのアプローチを使用することができます

https://blog.splibrarian.com/2012/06/06/using-calculated-columns-to-add-color-coding-to-your-sharepoint-lists/

+0

私は計算された列を避けて、SPDでそれを行う方法を見つけようとしていたのです。 $ Todayは条件付き書式設定で動作します。これはXSLだからですが、時間だけではなく、日数を引くだけです。 – Jonathan

0

あなたは、これは手動でページを更新するために誰かを必要とせずに自動的に更新するので、JavaScriptは、あなたの最善の策です。指定した間隔で関数を繰り返し実行し、現在の日付と日付列の値を照合することができます。

あなたの特定のHTMLに一致するように、document.querySelectorquerySelectorAllへの呼び出しで指定されたCSSセレクタを微調整する必要があるかもしれませんが、次のコードのようなものが機能します。一つの潜在的な落とし穴が適切に表示値(彼らは古い成長するにつれて、彼らが強調表示されて停止させること)に基づいて、このアプローチがします「年齢」を記録しながら、それは自動的に新しい変更をピックアップしていないということです

<script> 
formatCell(); 
function formatCell(){ 
    var frequencyToCheck = 2 /* num seconds between updates */ 
    var minutes = 5; /* num minutes back to highlight */ 
    var targetColumn = "Display name of the column you want to check"; 
    var formatting = "background-color:darkred;color:red;font-weight:bold;"; 
    var comparisonDate = new Date(); 
    comparisonDate.setHours(comparisonDate.getHours() - minutes); 
    var tables = document.querySelectorAll("table.ms-listviewtable"); /* should get all list view web parts on the page */ 
    var t_i = 0; 
    while(t_i < tables.length){ 
     var headings = tables[t_i].rows[0].cells; 
     var columnIndex = null; 
     var h_i = 0; 
     while(h_i < headings.length){ 
      var heading = headings[h_i].querySelector("div:first-child"); 
      if(heading != null){ 
       var displayName = heading.DisplayName ? heading.DisplayName : (heading.innerText ? heading.innerText : heading.textContent); 
       displayName = displayName.replace(/^\s+|\s+$/g,''); /* removes leading and trailing whitespace */ 
       if(displayName === targetColumn){ 
        columnIndex = h_i; 
        break; 
       } 
      } 
      h_i += 1; 
     } 
     if(columnIndex != null){ /* we found a matching heading */ 
      var rows = tables[t_i].rows; 
      for(var i = (rows.length > 0 ? 1 : 0); i < rows.length; i++){ 
       var cells = rows[i].children; 
       if(cells.length <= columnIndex){continue;} 
       var valueToEval = cells[columnIndex].innerText ? cells[columnIndex].innerText : cells[columnIndex].textContent; 
       if(typeof valueToEval == "undefined"){valueToEval = "";} 
       valueToEval = new Date(valueToEval); 
       if(valueToEval > comparisonDate){ 
        cells[columnIndex].setAttribute("style",formatting); 
       }else{ 
        cells[columnIndex].setAttribute("style",""); 
       } 
      } 
     } 
     t_i +=1; 
    } 
    setTimeout(formatCell,frequencyToCheck * 1000); 
} 
</script> 

リスト;更新された情報を表示したいときはいつでも、ページをリフレッシュ(または少なくともWebパーツのビューを更新)する必要があります。

関連する問題