delete 関数内の Ajax-Call が失敗した場合にのみポストバックする必要がある LinkButton があります。ajax-call は、行の削除が何らかの理由で失敗した場合に例外をスローする Webmethod を呼び出します。例外をスローすると、ajax 呼び出しが「エラー」ブランチに到達します (予想どおり)。ただし、「deleteSelectedRows」関数が false を返す場合、ポストバックは停止されていません。どうすればこれをアーカイブできますか?
<asp:LinkButton ID="Delete" ClientIDMode="Static" runat="server" Text="Delete" OnClientClick="return deleteSelectedRows()" ></asp:LinkButton>
//the jquery code
function deleteSelectedRows() {
//get selected rows
var selectedRows = ... getting ids ...
var postData = "{ 'IDs':'" + selectedRows + "'}";
var url = "WebMethods.aspx/DeleteRows";
var status= jQuery.ajax({
url: url,
dataType: "html",
async: false,
type: "POST",
data: postData,
contentType: "application/json; charset=utf-8",
success: function (msg) {
return true;//continue postback
},
error: function (err) {
jQuery.jGrowl('Fehler: Auftragspositionen konnten nicht gelöscht werden! Möglicherweise existieren bereits Transaktionen zu dieser Auftragsposition.');
//e.preventDefault();
return false;//stop postback
}
});
return status.status == 200;//true when delete worked, false otherwise
}
編集:これは、asp:Linkbutton の代わりに asp:Button を使用すると機能します...しかし、理由がわかりません!