|
在GridView中可以通過兩種方式來指定模板列的標(biāo)題: <asp:TemplateField SortExpression="..." HeaderText="..." >
<ItemTemplate>
.......
</ItemTemplate>
</asp:TemplateField>
2 通過HeaderTemplate模板來指定 <asp:TemplateField SortExpression="...">
<ItemTemplate>
......
</ItemTemplate>
<HeaderTemplate>
....
</HeaderTemplate>
</asp:TemplateField>
其中第一種方式會觸發(fā)Sorting事件,第二種方式不會。所以如果要想為模板列提供排序的,要采用第一種方式指定標(biāo)題。
一下是一個完整的列子 1. 一個GridView 首先: 將GridView的 AllowSorting 屬性 設(shè)置為 true。(允許點(diǎn)擊每一列的頭來排序) 然后: 設(shè)置你想排序的列的 SortExpression="id" 為你要排序的數(shù)據(jù)源的相應(yīng)屬性。 <asp:GridView ID="GridView1" runat="server" AllowSorting="True"
AutoGenerateColumns="False" onsorting="GridView1_Sorting">
<Columns>
<asp:TemplateField HeaderText="姓名" >
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("user.name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="id" SortExpression="id">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
2. 完成代碼
/// <summary>
/// 綁定到 DataTable 數(shù)據(jù)源 排序
/// </summary>
private void BindGridView()
{
// 獲取GridView排序數(shù)據(jù)列及排序方向
string sortExpression = this.GridView1.Attributes["SortExpression"];
string sortDirection = this.GridView1.Attributes["SortDirection"];
// 調(diào)用業(yè)務(wù)數(shù)據(jù)獲取方法
DataTable dtBind = this.getDB();
// 根據(jù)GridView排序數(shù)據(jù)列及排序方向設(shè)置顯示的默認(rèn)數(shù)據(jù)視圖
if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
{
dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
}
// GridView綁定并顯示數(shù)據(jù)
this.GridView1.DataSource = dtBind;
this.GridView1.DataBind();
}
/// <summary>
/// DataTable 數(shù)據(jù)源
/// </summary>
/// <returns></returns>
private DataTable getDB()
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("age");
dt.Rows.Add(new object[] { "000001", "hekui"});
dt.Rows.Add(new object[] { "000002", "zhangyu"});
dt.Rows.Add(new object[] { "000003", "zhukundian"});
dt.Rows.Add(new object[] { "000004", "liyang"});
dt.Rows.Add(new object[] { "000005", "caili"});
return dt;
}
|
|
|