使用javascript删除webgrid行?

时间:2013-03-17 04:15:04

标签: c# javascript asp.net-mvc asp.net-mvc-3 webgrid

我在mvc3中有一个webgrid。它有列delete。单击它后,我想运行一个Javascript函数,通过将行id作为参数传递给Javascript函数,将用户重定向到控制器的操作。

我该怎么做?该列不是Htmlactionlink

3 个答案:

答案 0 :(得分: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
});

};

答案 1 :(得分:1)

如文档here所示,这是在AJAX请求之后从WebGrid删除表行的示例。 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>

答案 2 :(得分:0)

您可以尝试将jQuery单击处理程序附加到元素,如下所示:

HTML:

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

使用Javascript:

$("tr a").click(function() {
  //your code
});