Dear Telerik-Staff,
in my application, I have an aspx-Page which stores a RadGrid. I am storing all the grid filter (filters, expansions, page) in memory, I am using "Session state" to storing it and i use javaScript for call the method in c#. What should be the right way to apply filters, expansions rows and page? Thanks.
Code: <ClientSettings>
<ClientEvents OnCommand="RadGridOrders_Command" OnHierarchyCollapsed="RadGridOrders_HierarchyCollapsed" OnHierarchyExpanding="RadGridOrders_HierarchyExpanding" OnDataBound="RadGridOrders_OnDataBound"/>
</ClientSettings> <script> //START SAVE FILTER
function RadGridOrders_Command(sender, args) {
spinner.spin(spinTarget);
args.set_cancel(true);
commandName = args.get_commandName();
if (commandName == "Page" || commandName == "Filter") {
for (var i = 0; i < tableView.get_pageSize() ; i++) {
tableView.collapseItem(i);
}
SaveOrderStatusState(); //Hear i save the filter to memory
}
} function SaveOrderStatusState() {
var expandRow = new Array();
pageIndex = tableView.get_currentPageIndex();
pageSize = tableView.get_pageSize();
sortExpression = tableView.get_sortExpressions().toList();
filterExpression = tableView.get_filterExpressions().toList();
selectedOrderDate = cbxOrderDateObject.get_selectedIndex();
selectedOrderStatus = cbxOrderStatusObject.get_selectedIndex();
selectedOrderStatusOption = cbxOrderStatusOption.get_selectedIndex();
//Checking the expanded rows
for (var i = 0; i < tableView.get_dataItems().length; i++) {
var row = tableView.get_dataItems()[i];
if (row.get_expanded() == true) {
var value = {row: parseInt(row.get_itemIndexHierarchical())};
expandRow.push(value);
}
}
state.pageIndex = pageIndex;
state.pageSize = pageSize;
state.sortExpression = sortExpression;
state.filterExpression = filterExpression;
state.selectedOrderDate = selectedOrderDate;
state.selectedOrderStatus = selectedOrderStatus;
state.exandRow = expandRow;
state.selectedOrderStatusOption = selectedOrderStatusOption;
var stateJson = JSON.stringify(state);
Data.Web.Services.Frontend.SaveOrderStatusState(stateJson, callBackSaveSuccess, CallBackError);
} function callBackSaveSuccess() {
//refreshing the Grid
if (selectedOrderStatusOption == 0) {
Data.Web.Services.Frontend.GetOpenOrders(tableView.get_currentPageIndex() * tableView.get_pageSize(), tableView.get_pageSize(), tableView.get_sortExpressions().toList(), tableView.get_filterExpressions().toList(), updateGrid);
}
else {
Data.Web.Services.Frontend.GetOrders(tableView.get_currentPageIndex() * tableView.get_pageSize(), tableView.get_pageSize(), tableView.get_sortExpressions().toList(), tableView.get_filterExpressions().toList(),
updateGrid);
}
} //END SAVE FILTER //STAR GET FILTER AND APPLY //Load the page $(document).ready(function () {
tableView = $find("<%= RadGridOrders.ClientID %>").get_masterTableView();
spinner = new Spinner(spinOptions);
spinTarget = document.getElementById('<%=RadGridOrders.ClientID %>');
commandName = "Load"
spinner.spin(spinTarget);
GetOrderStatusState(); //here call the filters
});
function GetOrderStatusState() {
Data.Web.Services.Frontend.GetOrderStatusState(successResponse, CallBackError);
} function successResponse(jsonString) {
var jS = JSON.parse(jsonString);
if (jS) {
state = JSON.parse(jS);
pageIndex = state.pageIndex;
pageSize = state.pageSize;
sortExpresion = state.sortExpression;
selectedOrderDate = state.selectedOrderDate;
selectedOrderStatus = state.selectedOrderStatus;
selectedOrderStatusOption = state.selectedOrderStatusOption;
if (selectedOrderStatusOption == null) {
selectedOrderStatusOption = 0;
}
//Applying the filter for the comboboxes
cbxOrderDateObject.get_items().getItem(selectedOrderDate).select();
cbxOrderStatusObject.get_items().getItem(selectedOrderStatus).select();
cbxOrderStatusOption.get_items().getItem(selectedOrderStatusOption).select();
//re-formatting the date
if (state.filterExpression.length > 0) {
for (var i = 0; i < state.filterExpression.length; i++) {
var filter = state.filterExpression[i];
if (filter.FieldName == "OrderDate") {
filter.FieldValue = isoDateReviver(filter.FieldValue);
}
}
}
filterExpression = state.filterExpression;
}
//Applying filter
if (selectedOrderStatusOption == 0) {
Data.Web.Services.Frontend.GetOpenOrders(pageIndex * pageSize, pageSize,
sortExpression, filterExpression,
updateGrid);
}
else {
Data.Web.Services.Frontend.GetOrders(pageIndex * pageSize, pageSize,
sortExpression, filterExpression,
updateGrid);
} }
function updateGrid(result) {
tableView.set_dataSource(result.Data);
tableView.dataBind();
if (commandName == "Filter" || commandName == "Load") {
tableView.set_virtualItemCount(result.Count);
}
//Applying expanded rows. if (state.exandRow.length > 0) {
for (var i = 0; i < state.exandRow.length; i++) {
var rowItem = state.exandRow[i];
if (rowItem != null) {
tableView.expandItem(rowItem.row);
}
}
spinner.stop(spinTarget);
} //END GET FILTER AND APPLY
</script>
Thanks.
in my application, I have an aspx-Page which stores a RadGrid. I am storing all the grid filter (filters, expansions, page) in memory, I am using "Session state" to storing it and i use javaScript for call the method in c#. What should be the right way to apply filters, expansions rows and page? Thanks.
Code: <ClientSettings>
<ClientEvents OnCommand="RadGridOrders_Command" OnHierarchyCollapsed="RadGridOrders_HierarchyCollapsed" OnHierarchyExpanding="RadGridOrders_HierarchyExpanding" OnDataBound="RadGridOrders_OnDataBound"/>
</ClientSettings> <script> //START SAVE FILTER
function RadGridOrders_Command(sender, args) {
spinner.spin(spinTarget);
args.set_cancel(true);
commandName = args.get_commandName();
if (commandName == "Page" || commandName == "Filter") {
for (var i = 0; i < tableView.get_pageSize() ; i++) {
tableView.collapseItem(i);
}
SaveOrderStatusState(); //Hear i save the filter to memory
}
} function SaveOrderStatusState() {
var expandRow = new Array();
pageIndex = tableView.get_currentPageIndex();
pageSize = tableView.get_pageSize();
sortExpression = tableView.get_sortExpressions().toList();
filterExpression = tableView.get_filterExpressions().toList();
selectedOrderDate = cbxOrderDateObject.get_selectedIndex();
selectedOrderStatus = cbxOrderStatusObject.get_selectedIndex();
selectedOrderStatusOption = cbxOrderStatusOption.get_selectedIndex();
//Checking the expanded rows
for (var i = 0; i < tableView.get_dataItems().length; i++) {
var row = tableView.get_dataItems()[i];
if (row.get_expanded() == true) {
var value = {row: parseInt(row.get_itemIndexHierarchical())};
expandRow.push(value);
}
}
state.pageIndex = pageIndex;
state.pageSize = pageSize;
state.sortExpression = sortExpression;
state.filterExpression = filterExpression;
state.selectedOrderDate = selectedOrderDate;
state.selectedOrderStatus = selectedOrderStatus;
state.exandRow = expandRow;
state.selectedOrderStatusOption = selectedOrderStatusOption;
var stateJson = JSON.stringify(state);
Data.Web.Services.Frontend.SaveOrderStatusState(stateJson, callBackSaveSuccess, CallBackError);
} function callBackSaveSuccess() {
//refreshing the Grid
if (selectedOrderStatusOption == 0) {
Data.Web.Services.Frontend.GetOpenOrders(tableView.get_currentPageIndex() * tableView.get_pageSize(), tableView.get_pageSize(), tableView.get_sortExpressions().toList(), tableView.get_filterExpressions().toList(), updateGrid);
}
else {
Data.Web.Services.Frontend.GetOrders(tableView.get_currentPageIndex() * tableView.get_pageSize(), tableView.get_pageSize(), tableView.get_sortExpressions().toList(), tableView.get_filterExpressions().toList(),
updateGrid);
}
} //END SAVE FILTER //STAR GET FILTER AND APPLY //Load the page $(document).ready(function () {
tableView = $find("<%= RadGridOrders.ClientID %>").get_masterTableView();
spinner = new Spinner(spinOptions);
spinTarget = document.getElementById('<%=RadGridOrders.ClientID %>');
commandName = "Load"
spinner.spin(spinTarget);
GetOrderStatusState(); //here call the filters
});
function GetOrderStatusState() {
Data.Web.Services.Frontend.GetOrderStatusState(successResponse, CallBackError);
} function successResponse(jsonString) {
var jS = JSON.parse(jsonString);
if (jS) {
state = JSON.parse(jS);
pageIndex = state.pageIndex;
pageSize = state.pageSize;
sortExpresion = state.sortExpression;
selectedOrderDate = state.selectedOrderDate;
selectedOrderStatus = state.selectedOrderStatus;
selectedOrderStatusOption = state.selectedOrderStatusOption;
if (selectedOrderStatusOption == null) {
selectedOrderStatusOption = 0;
}
//Applying the filter for the comboboxes
cbxOrderDateObject.get_items().getItem(selectedOrderDate).select();
cbxOrderStatusObject.get_items().getItem(selectedOrderStatus).select();
cbxOrderStatusOption.get_items().getItem(selectedOrderStatusOption).select();
//re-formatting the date
if (state.filterExpression.length > 0) {
for (var i = 0; i < state.filterExpression.length; i++) {
var filter = state.filterExpression[i];
if (filter.FieldName == "OrderDate") {
filter.FieldValue = isoDateReviver(filter.FieldValue);
}
}
}
filterExpression = state.filterExpression;
}
//Applying filter
if (selectedOrderStatusOption == 0) {
Data.Web.Services.Frontend.GetOpenOrders(pageIndex * pageSize, pageSize,
sortExpression, filterExpression,
updateGrid);
}
else {
Data.Web.Services.Frontend.GetOrders(pageIndex * pageSize, pageSize,
sortExpression, filterExpression,
updateGrid);
} }
function updateGrid(result) {
tableView.set_dataSource(result.Data);
tableView.dataBind();
if (commandName == "Filter" || commandName == "Load") {
tableView.set_virtualItemCount(result.Count);
}
//Applying expanded rows. if (state.exandRow.length > 0) {
for (var i = 0; i < state.exandRow.length; i++) {
var rowItem = state.exandRow[i];
if (rowItem != null) {
tableView.expandItem(rowItem.row);
}
}
spinner.stop(spinTarget);
} //END GET FILTER AND APPLY
</script>
Thanks.