Ajax-call刷新页面

时间:2015-11-22 13:25:20

标签: asp.net ajax webforms

我在gridview中有一个元素列表,我需要使用web-method删除它们,更新gridview并且不要重新加载整个页面。但每次调用后页面都会重新加载。

我的按钮:

<asp:Button ID="btnDelete" runat="server"  CssClass="btn btn-default" Text="Delete a row" OnClientClick="DeleteRecord() return false;" />

JS脚本:

function DeleteRecord() {
    var inputData = jsTextBox();
    if (confirm('Are you certain you want to delete this record?')) {
        $.ajax({
            type: "POST",
            url: "SubjectTable.aspx/DeleteRecord",
            data: inputData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $('#<%=gdViewSubj.ClientID%>').empty();
                if (data.d.length > 0) {
                    fillGrid(data);
                }
            },
            failure: function (data) {
                alert(data.d);
            }
        });
    }
    return false;
}
function fillGrid(data) {
    $('#<%=gdViewSubj.ClientID%>').append("<tr><th>SUBJ_ID</th><th>SUBJ_NAME</th><th>HOUR</th><th>SEMESTER</th></tr>");
    for (var i = 0; i < data.d.length; i++) {
        $('#<%=gdViewSubj.ClientID%>').append("<tr><td>" +
                    data.d[i].SUBJ_ID + "</td> <td>" +
                    data.d[i].SUBJ_NAME + "</td> <td>" +
                    data.d[i].HOUR + "</td> <td>" +
                    data.d[i].SEMESTER + "</td></tr>");
    }
}

因此,当我逐步检查脚本时,我发现一切都很好,gridview被清除然后填充而没有删除行。但是在脚本页面结束后重新加载并且我看到了旧行。如果我关闭页面并再次打开它,那么我会得到一个更新的表格。

此问题的根源是什么以及如何解决?

2 个答案:

答案 0 :(得分:1)

在onClientClick事件的;之后,您似乎错过了DeleteRecord()

但是如果你没有使用asp:Button的内置功能。为什么不只是使用常规按钮。这样asp.net框架不会向它添加任何回调函数。如果添加runat="server"标记,仍可以修改服务器端的按钮。尝试将其更改为此

<button ID="btnDelete" runat="server" Class="btn btn-default" onclick="DeleteRecord(); return false;" >Delete a row</button>

答案 1 :(得分:0)

你的onclick功能:

DeleteRecord() return false;

会抛出错误:

  

意外的令牌返回

你需要用分号结束你的第一个语句。

DeleteRecord(); return false;