获取Javascript中的Devexpress Gridview排序方式和排序顺序
Get Devexpress Gridview Sort By and Sort Order in Javascript
我正在MVC中实现Devexpress网格控制。我遇到了一个问题,需要当前的SortedBy列和javascript中的排序顺序(asc/desc)。我还尝试了客户端事件OnColumnSortingChanged(s,e),它只是在单击事件时提供列的名称,而不是来自gridview javascript对象。
经过研究得到了答案。。。
必须将CustomJsProperty添加到部分视图中的控件中,如下所示
settings.CustomJSProperties = (s, e) =>
{
var Grid = s as MVCxGridView;
var result = new System.Collections.Hashtable();
foreach (var col in Grid.AllColumns)
{
var dataCol = col as GridViewDataColumn;
if (dataCol != null)
{
if (dataCol.SortIndex == 0)
{
e.Properties["cpColumnsProp"] = new Dictionary<string, object>()
{
{ "sortcolumn", dataCol.FieldName },
{ "sortorder", ((Convert.ToString(dataCol.SortOrder).Equals("Ascending")) ? "asc" : "desc")}
};
}
}
}
};
按以下处理ColumnSortingChange事件
function gvChartList_OnColumnSortingChanged(s, e) {
$("#hdsortname").val(e.column.fieldName); // contains the sort column name
$("#hdsortorder").val(((s.cpColumnsProp.sortcolumn == e.column.fieldName) ? "desc" : "asc")); // contains the sort column order
}
最后但并非最不重要的是,必须定义列的默认排序索引和排序顺序
settings.Columns.Add(col =>
{
// column details
col.SortIndex = 0;
col.SortAscending();
});
我最近需要类似的东西,我想保存列顺序、排序顺序和筛选信息;使得用户可以创建网格的保存视图,而不必不断地重新输入所有这些偏好。
我发现在CustomJSProperties事件中,我可以与作为ASPxGridView的发送方进行交互,这样我就可以从ASPxGridView.SaveClientLayout()中获取所需的值。这里也有用的是FilterExpression和VisibileRowCount-如果你想使用筛选器表达式进行导出,但仅当VisibleRowCount小于某个阈值时(这是底部寻呼机区域中显示的行数)
settings.CustomJSProperties = (s, e) =>
{
ASPxGridView gridView = (ASPxGridView)s;
e.Properties["cpGridFilterExpression"] = gridView.FilterExpression; //Make Filter Expressions Availabe to JavaScript
e.Properties["cpVisibleRowCount"] = gridView.VisibleRowCount; //Make Visible Row Count Availabe to JavaScript
e.Properties["cpLayout"] = gridView.SaveClientLayout(); //Get Layout String and make it available to JavaScript
};
那么这有什么作用呢?此事件中定义的属性可用作javascript网格视图对象的属性。因此,在这里,我们尽可能获取这些值,并将它们放在我们通常无法访问的地方。
然后,通过JavaScript,我们现在可以访问GridView.cpLayout(其中GridView是提供给网格的名称/id。)
<script type="text/javascript">
$(document).ready(function () {
$('#saveButton').click(
function () {
var layout = GridView.cpLayout;
//Perform Save...
}
);
});
</script>
需要明确的是,此"布局"包含排序顺序、可见列信息和筛选器信息。
布局:
https://documentation.devexpress.com/#AspNet/CustomDocument4342
https://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridViewASPxGridView_SaveClientLayouttopic
自定义JSP属性:
https://documentation.devexpress.com/#AspNet/DevExpressWebMvcGridViewSettings_CustomJSPropertiestopic
注意:我在这里添加这个解决方案是因为这是我在搜索问题时发现的。可以看到,这些主题类似于访问CustomJSProperty事件处理程序中的AspxGridView(的基)或MVCGridView。
- 以不同的方式对相同的可观察数组进行排序
- 是否可以在JqGrid中按字母顺序以外的其他方式对组进行排序
- 对对象数组进行分组和排序的最佳方式
- Javascript:以编程方式对对象数组进行排序
- 在客户端的Laravel中排序/筛选表的最受欢迎的方式
- 为什么我的数组没有按照将对象推入数组的方式排序
- 以相同的方式对多个数组进行排序Javascript
- 如何以有效的方式按给定数组对节点列表进行排序
- AngularJS 以某种方式一键对两个表进行排序
- 根据连续的方式对数组进行排序,就像先模拟最短的作业一样
- 自定义筛选器排序方式
- AngularJS智能表以编程方式排序
- 什么是对列表重新排序进行动画处理.js反应友好方式
- 如何让 Javascript 和 PHP 以相同的方式对 JSON 响应进行排序
- JQueryUI:创建两个拖放列表的最佳方式,其中一个是可排序的,另一个在拖放时重新排序
- 使用jQuery和Laravel对数据进行排序的最佳方式
- 获取Javascript中的Devexpress Gridview排序方式和排序顺序
- 对我来说,以排序的方式检索这些信息的最佳方式是什么
- 如何根据另一个数组的排序方式对一个数组进行排序?(Javascript)
- 未捕获的类型错误:无法读取属性'排序方式'的未定义