Hello, i have a problem with my Grid and Persist-State, when i use "Load" state, the grid lose all properties(Edit and Remove bottons, Tooltips and styles).
This is the Code.
@{
string quote = "\"";
var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string jsonString = javaScriptSerializer.Serialize(DictionaryByControls.TagsConfirmationPanel);
}
@(Html.Kendo().Grid<
ControlGAS.DataAccess.Entities.Customer
>()
.Name("GridCustomers")
.Columns(columns =>
{
columns.Bound(customer => customer.Id).Title("ID").Filterable(f => f.UI("filterById")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Bound(customer => customer.Denomination).Title(ControlGAS.Office.Resources.Resources.ControlGAS.Denomination).Filterable(f => f.UI("filterByName")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Bound(customer => customer.Code).Title(ControlGAS.Office.Resources.Resources.ControlGAS.Code).Filterable(f => f.UI("filterByCode")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Bound(customer => customer.Address).Title(ControlGAS.Office.Resources.Resources.ControlGAS.Address).Filterable(f => f.UI("filterByAddress")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Bound(customer => customer.City).Title(ControlGAS.Office.Resources.Resources.ControlGAS.City).Filterable(f => f.UI("filterByCity")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Bound(customer => customer.FiscalIdentification).Title(ControlGAS.Office.Resources.Resources.ControlGAS.FiscalIdentification).Filterable(f => f.UI("filterByFiscalId")).HtmlAttributes(new { @style = "white-space: nowrap;" });
columns.Template(customer => { }).ClientTemplate(
"<
a
href
=
" + quote + @Url.Action("
Editing", "Customer", new {
customerId
=
"#=Id#"
}) + quote + "><
i
class
=
'font-size-20 icon md-edit margin-right-10'
aria-hidden
=
'true'
></
i
></
a
>" + "" +
"<
a
class
=
'cursor-pointer'
data-customer
=
'#=Denomination#'
data-id-customer
=
'#=Id#'
data-resource
=
'" + jsonString + "'
data-control
=
'btn-delete-customer'
><
i
class
=
'font-size-20 icon md-delete margin-right-10'
aria-hidden
=
'true'
></
i
></
a
>")
.Title("Actions").Width(100);
})
.ColumnMenu()
.Scrollable(s => s.Height("100%"))
.Sortable()
.Groupable(g => g.Messages(m => m.Empty(ControlGAS.Office.Resources.Resources.ControlGAS.Drag)))
.Pageable(p => p
.Refresh(true)
.PageSizes(true)
.ButtonCount(5)
.PreviousNext(true)
.Messages(m => m.ItemsPerPage(ControlGAS.Office.Resources.Resources.ControlGAS.ItemPerPage)))
.DataSource(
dataSource => dataSource
.Ajax()
.Read(read => read.Action("GetCustomers", "Customer"))
)
.Resizable(r => r.Columns(true))
.Reorderable(r => r.Columns(true))
.ClientDetailTemplateId("master")
.Filterable(filter => filter.Mode(GridFilterMode.Row)
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith(ControlGAS.Office.Resources.Resources.ControlGAS.StartsWith)
.IsEqualTo(ControlGAS.Office.Resources.Resources.ControlGAS.IsEqualTo)
.IsNotEqualTo(ControlGAS.Office.Resources.Resources.ControlGAS.IsNotEqualTo)
)
.ForNumber(num => num.Clear()
.IsEqualTo(ControlGAS.Office.Resources.Resources.ControlGAS.IsEqualTo)
.IsNotEqualTo(ControlGAS.Office.Resources.Resources.ControlGAS.IsNotEqualTo)
.IsNull(ControlGAS.Office.Resources.Resources.ControlGAS.IsNull)
.IsLessThan(ControlGAS.Office.Resources.Resources.ControlGAS.IsLessThan)
.IsGreaterThan(ControlGAS.Office.Resources.Resources.ControlGAS.IsGreaterThan))
)
)
.Events(events => events.DataBound("dataBound"))
)
Save State
function
GetDataGrid() {
var
grid = $(
"#GridCustomers"
).data(
"kendoGrid"
);
var
dataSource = grid.dataSource;
var
currentColumnState =
new
Array();
for
(
var
i = 0; i < grid.columns.length; i++) {
if
(grid.columns[i].hidden == undefined) {
grid.columns[i].hidden =
false
;
currentColumnState.push({
field: grid.columns[i].field,
hidden: grid.columns[i].hidden
});
}
else
{
currentColumnState.push({
field: grid.columns[i].field,
hidden: grid.columns[i].hidden
});
}
}
var
state = {
page: dataSource.page(),
pageSize: dataSource.pageSize(),
sort: dataSource.sort(),
group: dataSource.group(),
filter: dataSource.filter(),
columns: currentColumnState
};
return
JSON.stringify(state);
}
Load State
function
SetDataGrid(data) {
debugger;
var
result = data.result;
var
jsonResult = $.parseJSON(result);
var
state = $.parseJSON(jsonResult.Data);
var
grid = $(
"#GridCustomers"
).data(
"kendoGrid"
);
var
options = grid.options;
for
(
var
i = 0; i < state.columns.length; i++) {
options.columns[i].hidden = state.columns[i].hidden;
console.log(state.columns[i]);
if
(state.columns[i].hidden ==
true
) {
grid.hideColumn(i);
}
else
{
grid.showColumn(i);
}
}
options.columns = state.columns;
options.dataSource.page = state.page;
options.dataSource.pageSize = state.pageSize;
options.dataSource.sort = state.sort;
options.dataSource.filter = state.filter;
options.dataSource.group = state.group;
grid.destroy();
$(
"#GridCustomers"
).kendoGrid(options);
}
Thanks All