datagrid点击标题进行排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
datagrid点击标题进⾏排序
步骤:
1.页⾯上⾸先设置datagrid的AllowSorting="true",以及指定排序⽅法OnSortCommand="DataGrid1_SortCommand"
2.在列的header处指定排序字段如SortExpression="keyword"
3.后台cs部分本例使⽤了ViewState["orderBy"]来保存排序字段和规则( SetSql();是我实例中的datagrid绑定⽅法)
PS:绑定datagrid后,要修改列SortExpression中相反的排序顺序
1 protected void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
2 {
3
4 ViewState["orderBy"] = e.SortExpression;
5 SetSql();
6 //找到排序的列,并修改把它的排序属性
7 DataGridColumn clm = null;
8 for (int i = 0; i < DataGrid1.Columns.Count; i++)
9 {
10 if (DataGrid1.Columns[i].SortExpression == e.SortExpression)
11 {
12 clm = DataGrid1.Columns[i];
13 break;
14 }
15 }
16 if (clm == null) return;
17
18 if (e.SortExpression.ToLower().IndexOf("desc") > 0)
19 {
20 clm.SortExpression = e.SortExpression.ToLower().Replace("desc", "asc");
21 }
22 else
23 {
24 if (e.SortExpression.ToLower().IndexOf("asc") > 0)
25 {
26 clm.SortExpression = e.SortExpression.ToLower().Replace("asc", "desc");
27 }
28 else
29 {
30 clm.SortExpression = e.SortExpression.ToLower() + " desc";
31 }
32 }
33
34 }
特别提⽰:
i.OnSortCommand、OnSelectCommand、OnDeleteCommand和OnUpdateCommand⽅法是在OnItemCommand执⾏之后起作⽤。
如DataGrid1_ItemCommand中的处理是要排除Header的,有必要做如下处理:
CodeDataGrid1_ItemCommand⽅法
protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item||e.Item.ItemType!=ListItemType.AlternatingItem)
return;
}
ii.排序后,重新绑定datagrid也是不可缺少的功课。
附录:
MS对DataGrid、DataList和Repeater的ListItemType,⾃动有AlternatingItem的解释 Even if you have not created an in your Repeater control, every other row still has an ItemType of ListItemType.. Therefore, you must check for both ListItemType.Item and ListItemType.AlternatingItem to process every。