从网格中选中一个复选框后重定向到相同位置

时间:2013-04-15 12:19:22

标签: asp.net-mvc jquery-ui jquery redirect

我有一张桌子,其中有一列复选框。在用户选择特定复选框后,假设从第20行开始,并执行必要的操作,我想调用网格,但它应该指向我选中的行复选框。但目前还没有发生。而不是window.location,还有什么其他方法?我希望你能得到我的问题。请帮忙。提前致谢!以下是我的代码 -

 function UpdateStatus(status, id, cb) {
    var Status = status;
    var Id = id;
    var projectId = $("#projectId").val();
    if ($("#" + status + id).is(':checked')) {
        if (confirm("Are you sure?")) {
            var data = { Status: Status, Id: Id, projectId: projectId };
            $.ajax({
                url: '@Url.Action("EditDispatchStatus", "BOM")',
                type: 'GET',
                data: data,
                async: false,
                success: function (data) {
                     window.location = '@Url.Action("DispatchStatus","BOM")?Id=' + data.result;
                }
            });
        }
    }
}

1 个答案:

答案 0 :(得分:1)

首先你应该删除async: false选项,因为这是一个阻塞调用,而不是一个AJAX调用,非常糟糕。

现在回答你的实际问题。以下是获取包含行的方法:

function UpdateStatus(status, id, cb) {
    var Status = status;
    var Id = id;
    var projectId = $("#projectId").val();
    var $checkbox = $("#" + status + id);
    if ($checkbox.is(':checked')) {
        if (confirm("Are you sure?")) {
            var data = { Status: Status, Id: Id, projectId: projectId };
            $.ajax({
                url: '@Url.Action("EditDispatchStatus", "BOM")',
                type: 'GET',
                data: data,
                context: $checkbox.closest('tr'),
                success: function (data) {
                    // this will point to the <tr> that was clicked
                }
            });
        }
    }
}

注意我们如何将context: $checkbox.closest('tr')传递给成功回调。因此,在此回调内this将指向已单击的<tr>行。您可以使用它来执行某些操作。