在GridView中可以通过两种方式来指定模板列的标题: <asp:TemplateField SortExpression="..." HeaderText="..." > <ItemTemplate> ....... </ItemTemplate> </asp:TemplateField> 2 通过HeaderTemplate模板来指定 <asp:TemplateField SortExpression="..."> <ItemTemplate> ...... </ItemTemplate> <HeaderTemplate> .... </HeaderTemplate> </asp:TemplateField> 其中第一种方式会触发Sorting事件,第二种方式不会。所以如果要想为模板列提供排序的,要采用第一种方式指定标题。
一下是一个完整的列子 1. 一个GridView 首先: 将GridView的 AllowSorting 属性 设置为 true。(允许点击每一列的头来排序) 然后: 设置你想排序的列的 SortExpression="id" 为你要排序的数据源的相应属性。 <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 数据源 排序 /// </summary> private void BindGridView() { // 获取GridView排序数据列及排序方向 string sortExpression = this.GridView1.Attributes["SortExpression"]; string sortDirection = this.GridView1.Attributes["SortDirection"]; // 调用业务数据获取方法 DataTable dtBind = this.getDB(); // 根据GridView排序数据列及排序方向设置显示的默认数据视图 if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection))) { dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection); } // GridView绑定并显示数据 this.GridView1.DataSource = dtBind; this.GridView1.DataBind(); } /// <summary> /// DataTable 数据源 /// </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; } |
|