2011-07-26 6 views
5

Iはそれぞれの最初の(ヘッダー)行を除いて、ASP.NETページ上のすべてのテーブル(GridViewの)にjQueryのUIソート可能なプラグインを適用し、次のコードがあります。私は適用したいしかしテーブル(ASP.NET GridView)に条件付きでjQuery Sortable UIウィジェットを適用するには?

function pageLoad() { 
    $('table').sortable({ 
     items: 'tr:not(:first)', 
     axis: 'y', 
     scroll: true, 
     start: startDrag, //store start position 
     stop: stopDrag //get end position, update database 
    }).disableSelection(); 

をヘッダー行に加えて複数の行がある場合は、表にソート可能です。それ以外の場合、ドラッグ&ドロップ機能は冗長です。

上記の条件を複数のコンテンツ行があるテーブルにのみ条件付きで適用するにはどうすればよいですか。ありがとう。

+0

私はそれに似たものが必要なので、これはすばらしい、非常にタイムリーです。追加する2つの質問:1)startDragは未定義です。コードビハインドで宣言する必要があると仮定しますが、どのデータ型ですか? 2)私はこれを使用して、ユーザーが 'order'列(int)に基づいて順序付きリストを作成できるようにしています。これをデータベースに保存する効率的な方法はありますか? – nycdan

+0

多分もっと良い質問は、私はgridviewの新しい位置を読むことができます。アイテム0と1を交換し、gridview1.Rows [0] .Cells [1] .Textを読み込むと、元のアイテムが表示されます。各ポジションのポストソートアイテムの読み方がわからない – nycdan

+0

ドロップされた要素の通常のjquery 'index()'をチェックするか、 'sortable.serialize()'を使って完全な位置状態をエクスポートすることができます:http://jqueryui.com/demos/sortable/#method-serialize –

答えて

5

jquery filter()が解決策を提供します。テスト関数を使用して一致する要素のセットをフィルタリングすることができます。したがって、次のコードは、唯一のデータ行以上のものを持っているテーブルにsortableを適用します。

function pageLoad() { 

    $('table').filter(function() { 
         return $('tr', this).length > 2; 
         }) 
       .sortable({ 
       items: 'tr:not(:first)', 
       axis: 'y', 
       scroll: true, 
       start: startDrag, //store start position 
       stop: stopDrag //get end position, update database 
       }) 
       .disableSelection(); 
} 
+0

完璧に働いてくれてありがとう! :) –

0

それに応答して上記のクエリをnydcanために、startDragメソッドは次のようになります。

function startDrag(event, ui) { 
    var startIndex = ui.item.index(); 
    ui.item.data('startIndex', startIndex); 
} 

には、stopDrag方法のルックスこのように:

function stopDrag(event, ui) { 
    var startIndex = ui.item.data('startIndex'); 
    var endIndex = ui.item.index(); 
    if (startIndex != endIndex) { 
     $.ajax({ 
      type: 'POST', 
      url: '<%= ResolveUrl("~/MyPage.aspx/UpdateOrder") %>', 
      contentType: 'application/json; charset=utf-8', 
      data: "{ 'startIndex':'" + startIndex + "', 'endIndex':'" + endIndex + "'}", 
      dataType: 'json', 
      success: updateSuccess, 
      error: updateError 
     }); 
    } 
} 

私は、このように私のページ上のWebメソッド(VB.NET)を持っている:

<System.Web.Services.WebMethod()> 
Public Shared Sub UpdateRulePriority(ByVal startIndex As Integer, ByVal endIndex As Integer) 

    'Do stuff 

End Sub 

希望に役立ちます。

関連する問題