2

次の関数を使用して、テーブル内の行を削除します

//delete individual row
jQuery('.stdtable img.delete').click(function(){
    var c = confirm('Continue delete?');
    if(c) jQuery(this).parents('tr').fadeOut(function(){ 
        jQuery(this).remove();
    });
    return false;
});

このコードは別の js ファイルにあり、すべてのページに共通です。次に、データベースから行を削除する Ajax アクションを追加したいと思います。ただし、現在のページに応じて、別のコントローラーを呼び出す必要があります。

例: 商品ページは ProductController で delete を呼び出す必要があります。 ProductGroup ページは ProductGroupController で delete を呼び出す必要があります。

これをどのように処理しますか?

4

3 に答える 3

5

呼び出すコントローラーを定義する方法が必要な場合はdata、テーブルに属性を配置できます。このようなもの:

<table class="stdtable" data-remove-url="@Url.Action("DeleteRow", "MyController")">
    <tr data-id="1">
        AAA
        <img class="delete" src="foo.jpg" />
    </tr>
    <tr data-id="2">
        BBB
        <img class="delete" src="foo.jpg" />
    </tr>
 </table>

次に、jQuery で、この値をurlリクエストのパラメーターとして取得し、id削除することができます。

jQuery('.stdtable img.delete').click(function(e) {
    e.preventDefault();
    if (confirm('Continue delete?')) {
        var $el = $(this);
        var $tr = $el.closest('tr');
        var url = $el.closest('table').data('remove-url');
        var id = $tr.data('id');

        $tr.fadeOut(function() { 
            $el.remove();
            $.post(url, { rowId = id }); // do the delete on the server 
        });
    }
});
于 2013-01-03T14:20:33.907 に答える
1

呼び出す必要があるコントローラーの URL を含むカスタム属性をテーブルまたは行に追加できます。メソッドでは、このカスタム属性を読み取ってコントローラーの URL を取得できます。JQuery属性メソッドについては、こちらを参照してください。

于 2013-01-03T14:18:33.847 に答える
0

私があなたの質問を正しく理解している場合は、クラス削除の画像をクリックして、データベース内のその行を削除する呼び出しを行います。最も簡単な解決策は

<img data-rowid="1" src="something.jpg"/>

jQuery('.stdtable img.delete').click(function(e){
    e.preventDefault();
    var c = confirm('Continue delete?');
    var that = this;
    if(c) {
        var id = this.data("rowid");
        jQuery.ajax({ url : "/resource/"+id, method : "DELETE" 
              statusCode: {
                 200: function() {
                       jQuery(that).parents('tr').fadeOut(function(){ 
                            jQuery(that).remove();
                       });
                 }
              }});

    }
    return false;
});

于 2013-01-03T14:24:32.930 に答える