Как исправить ошибку в данных сетки, не обновляющуюся в Angularjs
Я хочу искать / фильтровать значение в сетке данных. Но когда я получаю ответный успех данных, но сетка не обновляется.
Я пытаюсь использовать пользовательский источник данных angularjs, такой как https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/CustomDataSource/AngularJS/Light/ Теперь я думаю, что proplem в сетке не обновляет данные привязки аффтера. Индекс httmp:
<div class="x_content form-common-css">
<div class="row">
<div class="col-sm-12" ng-init="returnUrl='ManageAccount'">
<div class="pull-right">
<div class="input-group">
<div class="input-group-prepend">
<div dx-button="{type: 'success', icon: 'add',hint:'@(Localizer["CreateAccount"])', onClick: onClickAdd}" style="float:right;margin-right:10px;"></div>
</div>
<div id="txtSearch" dx-text-box="{mode:'search', placeholder:'@(Localizer["Search"])', onValueChanged: onChangeValueSearch,onEnterKey: onEnterKeySearch}" class="width-auto"></div>
</div>
</div>
</div>
<div class="col-sm-12">
<div id="grdManagerAccount" dx-data-grid="grdOptions" class="mrBotton-10" dx-item-alias="dataItem"> </div>
</div>
</div>
</div>
Источник данных, я хочу попробовать фильтр в Api при использовании "textSearch" и получить. Ответ на запрос данных, например, повторный:{RecordTotal: int, Records:[]}
var customStore = new DevExpress.data.CustomStore({
load: function (loadOptions) {
debugger;
var d = $.Deferred();
var sort = "";
var desc = false;
if (loadOptions.sort) {
desc = loadOptions.sort[0].desc;
sort = loadOptions.sort[0].selector;
}
var oFilter = {
pageIndex: (loadOptions.skip / loadOptions.take) + 1 ,
pageSize: loadOptions.take,
keyWord: $scope.textSearch,
sort: sort,
desc: desc
};
location.hash = $.param(oFilter);
manageAccountService.indexAccountAPI.getAllAccounts(oFilter).then(function (result) {
var data = result.data;
$scope.index = data.IndexCount;
//--------------------=======-----------------------//
//-------when run this comand data grid was not reload, or binding
d.resolve(data.Records, { totalCount: data.RecordTotal });
}, function (error) {
d.resolve([], { totalCount: 0 });
});
return d.promise();
},
onLoaded: function (options) {
$scope.showAfterLoad = true;
$scope.showLoadPanel = false;
}
});
$scope.grdOptions = {
width: "auto",
paging: { pageSize: 15 },
showBorders: true,
showRowLines: true,
hoverStateEnabled: true,
noDataText: commonTextTranslate.commonNoData,
onInitialized: function (e) {
dataGrid = e.component;
},
loadPanel: {
enabled: true,
showPane: true,
showIndicator: true,
width: 200, height: 100,
text: commonTextTranslate.commonLoadPage
},
pager: {
showPageSizeSelector: true,
allowedPageSizes: [15, 30, 50],
showInfo: true,
infoText: commonTextTranslate.commonPageText + ' #{0}. ' + commonTextTranslate.commonTotalText + ': {1} ({2} ' + commonTextTranslate.commonItemText + ')'
},
bindingOptions: {
'pager.visible': 'ShowPage',
},
dataSource: { store: customStore },
columns: [
{ caption: textTranslates.No, width: 50, alignment: 'center', cellTemplate: function (cell, options) { return $(cell).text(options.rowIndex + $scope.index + 1); } },
{
dataField: 'AccountName', sortOrder: "asc",
caption: textTranslates.AccountName,
},
{
cellTemplate: $("#tmp-person"), caption: textTranslates.lblPerson, dataField: "FullName"
},
{
alignment: 'center', width: '110px', cellTemplate: $("#tmp-actions")
}
],
filterRow: {
visible: false,
showOperationChooser: false
},
remoteOperations: {
grouping: false,
filtering: false,
sorting: true,
paging: true
}
};
Поиск по событию:
$scope.onEnterKeySearch = function (e) {
$scope.textSearch = $(e.element).find("input").val();
var dataGrid = $('#grdManagerAccount').dxDataGrid('instance');
if ($scope.textSearch.trim()) {
dataGrid.filter([
["AccountName", "contains", $scope.textSearch],
"or",
["FullName", "contains", $scope.textSearch],
"or",
["EmailAddress", "contains", $scope.textSearch],
"or",
["Address", "contains", $scope.textSearch],
"or",
["PhoneNumber", "contains", $scope.textSearch],
]);
} else {
var store = dataGrid.getDataSource();
store.reload()
}
};