在
Net 中 DataGrid 雖然有排序的功能
但並不支持雙向的排序
用到了
看了些相關的帖子
自己嘗試了一種方法
竟然也行得通
主要是用DataGrid
Attributes 存了一個參數
同時在onSortCommand中修改了DataGridColumn的SortExpression
代碼如下
private void BindData()
{
DataTable dt =
;
if(dt != null)
{
DataView dv = dt
DefaultView;
if(DataGrid
Attributes[
SortBy
] != null)
{
dv
Sort = DataGrid
Attributes[
SortBy
];
}
DataGrid
DataSource = dv;
DataGrid
DataBind();
}
}
private void DataGridSort(object source
System
Web
UI
WebControls
DataGridSortCommandEventArgs e)
{
DataGrid
Attributes[
SortBy
] = sortstr;
this
BindData();
//找到排序的列
並修改把它的排序屬性
DataGridColumn clm = null;
for(int i=
;i<DataGrid
Columns
Count;i++)
{
if(DataGrid
Columns[i]
SortExpression == e
SortExpression )
{
clm = DataGrid
Columns[i];
break;
}
}
if(clm == null) return;
if(e
SortExpression
ToLower()
IndexOf(
desc
) >
)
{
clm
SortExpression = e
SortExpression
ToLower()
Replace(
desc
asc
);
}
else
{
if(e
SortExpression
ToLower()
IndexOf(
asc
) >
)
{
clm
SortExpression = e
SortExpression
ToLower()
Replace(
asc
desc
);
}
else
{
clm
SortExpression = e
SortExpression
ToLower() +
desc
;
}
}
}
From:http://tw.wingwit.com/Article/program/net/201311/12770.html