<asp:GridView
ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333" GridLines="None"
AllowSorting="True" OnSorting="GridView1_Sorting">
<FooterStyle
BackColor="#507CD1" Font-Bold="True" ForeColor="White"
/>
<RowStyle
BackColor="#EFF3FB"
/>
<Columns>
<asp:BoundField
DataField="id" HeaderText="ID" SortExpression="id"
/>
<asp:BoundField
DataField="name" HeaderText="NAME" SortExpression="name"
/>
<asp:BoundField
DataField="age" HeaderText="AGE" SortExpression="age"
/>
</Columns>
<PagerStyle
BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center"
/>
<SelectedRowStyle
BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333"
/>
<HeaderStyle
BackColor="#507CD1" Font-Bold="True" ForeColor="White"
/>
<EditRowStyle
BackColor="#2461BF"
/>
<AlternatingRowStyle
BackColor="White"
/>
</asp:GridView>
</div>
</form>
</body>
</html>
需要對GridView啓用AllowSorting、設置OnSorting事件,對需要排序的列設定SortExpression屬性。
// 正確的屬性設置方法
this.GridView1.Attributes.Add("SortExpression",
"id");
this.GridView1.Attributes.Add("SortDirection",
"ASC");
/// <summary>
/// GridView排序事件
///
</summary>
protected
void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
// 從事件參數獲取排序數據列
string sortExpression
= e.SortExpression.ToString();
// 假定爲排序方向爲“順序”
string sortDirection
= "ASC";
// “ASC”與事件參數獲取到的排序方向進行比較,進行GridView排序方向參數的修改
if (sortExpression
== this.GridView1.Attributes["SortExpression"])
{
//獲得下一次的排序狀態
sortDirection = (this.GridView1.Attributes["SortDirection"].ToString()
== sortDirection
? "DESC" :
"ASC");
}
// 重新設定GridView排序數據列及排序方向
this.GridView1.Attributes["SortExpression"]
= sortExpression;
this.GridView1.Attributes["SortDirection"]
= sortDirection;
this.BindGridView();
}
/// 綁定到GridView
///
</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();
}
爲了減少數據庫的鏈接,這裏使用的緩存catche,將生成的ds放到catche裏,然後重新綁定gridview。