我在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被清除然后填充而没有删除行。但是在脚本页面结束后重新加载并且我看到了旧行。如果我关闭页面并再次打开它,那么我会得到一个更新的表格。
此问题的根源是什么以及如何解决?
答案 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;