2016-05-03 6 views
1

私は剣道グリッドに取り組んでいます。データバインドイベントで、各行の2番目のブロックの値が最初のブロックよりも大きいかどうかをチェックする関数を呼び出しました。真の場合は、クラスを追加して内部のテキストの色を変更します。 しかし、問題は、ブラウザに表示されたときに追加されたクラスが最終的に離れてしまうことです。 エラーのある行が2行ある場合、編集中の最初の行はクラスを保持しませんが、後の行はその列を保持します。データブロック後の剣道グリッドの最後のイベント

dataBound: configureGridProperties, 

データバインドさのコードは、状況に

function configureGridProperties(e) { 
    try { 
     if (true) { 
      $('#grid .k-grid-content tr[role=row]').each(function (i) { 
       var sh = $(this).find('.sh').text(); 
       var sm = $(this).find('.sm').text() 
       var eh = $(this).find('.eh').text() 
       var em = $(this).find('.em').text() 
       var startMin = parseInt(sh) * 60 + parseInt(sm); 
       var endMin = parseInt(eh) * 60 + parseInt(em); 
       if (startMin > endMin) { 
        showOutputExplicitly('Start time cannot be less than end time'); 


        $(this).find('.sh, .sm,.eh,.em').addClass('timeError'); 
        $('div.k-grid-pager').hide(); 

        errorInTime = false; 
       } 
       else { 
         $(this).find('.sh, .sm,.eh,.em').removeClass('timeError');      
        if (!$('.timeError').length > 0) { 
         $('div.k-grid-pager').show(); 
         hideErrorMsgSlow(); 
         errorInTime = true; 
        } 
       } 
      }); 
     }   
     return false; 
    } catch (e) { 
    } 

写真です。 >

enter image description here

私はちょうど編集2行目(時刻23を起動する)colorChangeクラスを保持していないが、以前のものはそれを保持します。 dataBoundイベントの後に発生する他のイベントはありますか?

+0

この 'データバインドしてみてください:関数(){のsetTimeout(configureGridProperties、1)。 } ' – DontVoteMeDown

+0

@DontVoteMeDownはい、それは魔法のように働いた...ありがとう – Rajdeep

+0

素晴らしい。それを答えとして投稿してください。 – DontVoteMeDown

答えて

1

dataBoundが呼び出されると、グリッドhtml要素は新しいデータでまだレンダリングされません。私はそれが奇妙であることを知っていますが、私はこの作業を行うためにsetTimeoutを使用する以外の方法を知らない。これは動作することができる:

dataBound: function(e) { 
    window.setTimeout(configureGridProperties.bind(this, e), 1); 
} 

リファレンス:

関連する問題