0
jqueryグリッドの上に検索ボックスがあります。Jquery Grid Searchイベント - グリッドを強制的にリロードする方法
Search: <input type="text" value="" id="searchInput" placeholder="Enter Document Type"/>
検索キーストロークイベントでは、ユーザーが値を返さない文字列を入力するまではすべて正常に機能します。グリッドには、通常の「レコードが見つかりません」というメッセージが表示されます。この時点から、検索は壊れています。
なぜ私は調査して、postDataオブジェクト/プロパティには元のajax返されたグリッド行が含まれていないことがわかりました。したがって、後続の検索で空のグリッドをフィルタリングしようとしています。
ここでは、グリッドを強制的にリロードする必要があります(location.reload()はどこですか)?ページのリロードは、これが部分的なページであり、グリッドのない前のページにユーザーを強制的に戻すので、リロードしません。
<script type="text/javascript">
$(document)
.ready(function() {
'use strict';
showWebTour();
getAllAttachments();
$('#searchInput')
.on('change keyup paste',
function() {
var searchtext = $(this).val();
var grid = $('#documentList');
if ($("#documentList tr").length == 0 && searchtext.length == 0) {
location.reload();
}
var postdata = grid.jqGrid('getGridParam', 'postData');
// BUG: When Search returns no records, postData no longer exists so next search always fails
var myfilter = {
groupOp: "OR",
rules: []
};
myfilter.rules.push({
field: "DocumentType",
op: "cn",
data: searchtext
});
$.extend(postdata,
{
filters: myfilter
});
$("#gbox_documentList").show();
if ($('#empty-documentList', $('#gbox_documentList').parent()).length) {
$('#empty-documentList', $('#gbox_documentList').parent()).remove();
}
grid.jqGrid('setGridParam',
{
search: searchtext.length > 2,
postData: postdata
});
grid.trigger("reloadGrid",
[
{
page: 1
}
]);
});
});
function getAllAttachments() {
if (typeof ($('#refreshDocs') != 'undefined')) {
$('#refreshDocs').off('click');
}
$.ajax({
url:
'@Url.Action("AttactmentViewDocuments", "Document")[email protected]&[email protected]',
dataType: "json",
type: 'GET',
beforeSend: function() {
$('.all-documents-loading')
.css({
"display": "block"
});
$('.attached-documents-loading')
.css({
"display": "block"
});
$('.generated-documents-loading')
.css({
"display": "block"
});
},
success: function (data) {
bindDocumentList(data.GridData);
$('.jqgfirstrow').hide();
},
error: function(xhr, response, status) {
/* Let user know that could not load data */
},
complete: function() {
$('.all-documents-loading')
.css({
"display": "none"
});
$('.attached-documents-loading')
.css({
"display": "none"
});
$('.generated-documents-loading')
.css({
"display": "none"
});
}
});
}
を変更するには、どのように検索作業を説明することができます、データベースから新しいデータを生成するか、クライアントでフィルタリングしていますか側 –