【发布时间】:2012-12-19 07:27:37
【问题描述】:
标准的 ASP.NET Gridview 是否允许用户随意重新排序列?
如果是这样,我该如何实现此功能?谢谢。
示例:我的 gridview 有 3 列 A、B 和 C。用户 1 喜欢将其排列为 B、C、A;用户 2 喜欢 C、A、B 等。如果支持此功能,我希望用户能够将列标题拖动到所需位置。
【问题讨论】:
标准的 ASP.NET Gridview 是否允许用户随意重新排序列?
如果是这样,我该如何实现此功能?谢谢。
示例:我的 gridview 有 3 列 A、B 和 C。用户 1 喜欢将其排列为 B、C、A;用户 2 喜欢 C、A、B 等。如果支持此功能,我希望用户能够将列标题拖动到所需位置。
【问题讨论】:
标准的ASP.NET Gridview 不支持列排序,除非您往返于服务器并修改您的数据源。
您必须自己实现该功能或考虑使用第三方框架,例如 Telerik's RadControls for ASP.NET AJAX。查看工作示例here。
注意:我没有运行这个,但this blog 指的是在 page_init 上对数据表的列(大概是网格视图的数据源)进行排序,并且绑定应该处理网格视图列的排序......现在如果你想要全部异步进行,那么我认为这只是一个更长的对话
【讨论】:
将你的数据源作为你要绑定到网格视图的数据表,然后根据用户列顺序创建新的数据表,如
DataTable SourceTable = ds.Table[0];
DataTable table1 = new DataTable("Employee");
\\ take user choice order in array and use loop to create column as per array
\\ Below is order your column you can also change this order according to your login
\\ put your login here to arrange column order
// this loop will create column according to user choice
foreach(string row In USerChoiceArray)
{
table1.Columns.Add(row);
}
table1.Rows.Add(column value from source data table, 1);
table1.Rows.Add(column value from source data table, 2);
现在您已经根据用户选择创建了数据表,并将该数据表绑定到网格视图,如下所示:
gridview.DataScource = table1 ;
gridview.DataBind();
【讨论】: