1

私はwebgridmvc3にいます。列がありますdelete。クリックすると、Javascript関数を実行して、行IDをパラメーターとしてJavascript関数に渡すことにより、ユーザーをコントローラーのアクションにリダイレクトしたいと考えています。

どうすればいいですか?列は ではありませんHtmlactionlink

4

3 に答える 3

2

これが行の方法であると仮定します:-

<tr id="thisRowId">
  .
  .
  .
 <td>
    <a id="deleteBtn" data-rowId="thisRowId">delete</a>
 </td>
<tr>

削除クリック用の汎用機能を用意する

$('#deleteBtn').click(function(){

var id =   $(this).data('rowId'); // or use $(this).closest('tr').attr('id');

$.ajax({
url: "controller/action",
type: 'Delete', // assuming your action is marked with HttpDelete Attribute or do not need this option if action is marked with HttpGet attribute
data: {'id' : "'" + id  "'"} // pass in id here
success : yoursuccessfunction
});

};
于 2013-03-17T05:49:26.607 に答える
1

ここに記載されているように、これはWebGrid次の AJAX リクエストからテーブル行を削除する例です。WebGridテーブル内の特定のアイテムを簡単に識別できるわけではありません。問題は、削除する行をどのように特定するかです。この例では、MvcHtmlStringを使用して span タグを列に挿入しています。これには、テーブルから削除する行を識別するために後で使用される id 値が含まれています。

<div id="ssGrid">
    @{
        var grid = new WebGrid(canPage: false, canSort: false);
        grid.Bind(
            source: Model,
            columnNames: new[] { "Location", "Number" }
        );
    }
    @grid.GetHtml(
        tableStyle: "webGrid",
        headerStyle: "header",
        alternatingRowStyle: "alt",
        columns: grid.Columns(
            grid.Column("Location", "Location"),
            grid.Column("Number", "Number"),
            grid.Column(
                format: (item) => 
                    new MvcHtmlString(string.Format("<span id='ssGrid{0}'>{1}</span>",
                                          item.SecondarySystemId,
                                          @Ajax.RouteLink("Delete",
                                              "Detail", // route name
                                              new { action = "DeleteSecondarySystem", actionId = item.SecondarySystemId },
                                              new AjaxOptions { 
                                                  OnComplete = "removeRow('ssGrid" + item.SecondarySystemId + "')"
                                              }
                                          )
                                     )
                    )
            )
        )
    )
</div>

<script>
    function removeRow(rowId) {
        $("#" + rowId).closest("tr").remove();
    }
</script>
于 2014-03-23T20:33:35.930 に答える
0

次のように、jQueryクリックハンドラーを要素にアタッチしてみてください。

HTML:

<tr>
  <td>
    <a id="your id">delete</a>
  </td>
<tr>

Javascript:

$("tr a").click(function() {
  //your code
});
于 2013-03-17T04:53:21.533 に答える