2011-11-10 21 views
2

GridViewのために行フィルタを埋め込みバインドするポストバックを行った後、すべてのjQuery関数が完全に動作しますグリッドは再びrowfilterに基づいています。私のGridViewはコードから完全に構築され、テーブルとしてレンダリングされます。このポストバックの後、関数mouseover、mouseout、およびテーブル内のテーブル行をクリックしてもはや動作しません。GridViewのjQuery関数がポストバック後に動作しなくなる(マウスオーバー、クリック)

jQuery関数をdocument.ready関数内に配置します。

<tr jQuery1320916="3"> 

したがって、基本的に、各列の端部(3)の配列とその前にjQueryを使っていくつかのランダムな番号:私はまた、これは、行のHTMLに追加されるポストバック前に気づきました。ポストバックの後、これは行から削除されます。ここで

は、(最初​​のクリック機能はまだポストバック後に動作しますが、もうGridViewコントロールの機能ではない)私のjQueryのコードの一部です:

$(document).ready(function(){ 
     //start click function select all 
     $('input[id$="SelectDeselectAllBox"]').click(function(){    
     //start if 
     if($(this).is(':checked')){ 
      $(this).parent().parent().parent().parent().children().find('input:checkbox').attr('checked',true).closest('tr').addClass('SelectedRow') 
     }else{ 
      $(this).parent().parent().parent().parent().children().find('input:checkbox').attr('checked',false).closest('tr').removeClass('SelectedRow')}; 
     //end if 

     //end click function select all 
      }); 


     //highligth hovered row 
      $('table[id^=taskgrid] tbody tr').mouseover(function() { 
       $(this).addClass('HightlightRow'); 
      }).mouseout(function() { 
       $(this).removeClass('HightlightRow'); 
      });    

     //end document ready 
     }); 

は、私は何かが欠けて事前に感謝しています。

私はjQueryのは、この方法ではもう私のGridViewのを見つけられないことを発見しました:私はそれをtaskgridの合計IDを記入した場合、

$( 'テーブル[ID^= taskgrid]のtbody trの')動作します。しかし、これは私の選択肢ではありません。

//is everthing checked? start if 
if($(this).parent().find('input:checkbox:not(:checked)').length == 0){ 
    $(this).parent().parent().parent().parent().find('input:checkbox:first').attr('checked',true) 
    }else{ 
    $(this).parent().parent().parent().parent().find('input:checkbox:first').attr('checked',false)}; 
//end if 
+0

この問題を確認してください:http://stackoverflow.com/questions/256195/jquery-document-ready-and-updatepanels –

+0

私のソリューションではUpdatePanelを使用していません。その質問の答えを引用してください:「PageRequestManager更新パネルがページ上にあれば、自動的に利用可能なjavascriptオブジェクトです。 " – user1039394

答えて

1

問題は、あなたが使用していること、であるセレクター「で始まり」:

$('table[id^=taskgrid] tbody tr') 

ASP.NET Webフォームは、IDを生成するセレクタ「で終わる」を使用することをお勧めします。次のセレクタを使用してみてください、あなたのGridView idは「taskgrid」であると仮定すると:

$('table[id$="taskgrid"] tbody tr') 

あなたは、いくつかのテーブル要素をターゲットとし、「taskgrid」されている場合は、IDの一部でしかありません、あなたが使用できるセレクタ「を含む」:

$('table[id*="taskgrid"] tbody tr') 
+0

問題は、1ページに複数のグリッドビューがあり、グリッドビューの総量が異なることがあります。グリッドには、グリッド(各グリッドごとに異なる)の名前が付けられたIDをグリッドに割り当てます。私が$( 'table [id * = "taskgrid"] tbody tr')を実行すると、taskgridを含むIDを持つテーブルが検索されます。この後、マウスオーバーとクリックの機能は機能しますが、クリックされたグリッド内のすべてのチェックボックスがチェックされているかどうかをチェックする次の関数は、そのグリッドビューからすべてのチェックボックスを選択/選択解除します。私は上記の関数を追加しました。 – user1039394

+0

"contains"セレクタ - > $( 'table [id * = "taskgrid"] tbody tr') – tpeczek

+0

私は元の問題を助けてくれました。 – user1039394

関連する問題