2013-04-30 25 views
0

我正在實現一個gridview來處理單個sql server數據庫表。當我點擊排序列時,首先按大寫字母(例如Test,Test2,Test3,test1,test2)排序。有沒有一種方法來操縱排序,以便它能夠按預期返回結果(例如Test,test1,Test2,test2,Test3)?ASP.NET Gridview大小寫不敏感的列排序

回答

1

嘗試在.aspx文件如下:

<asp:GridView ID="grd" runat="server"> 
</asp:GridView> 

而且在.aspx.cs如下補充:

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 

    dt.Columns.Add("Subject", typeof(string)); 

    dt.Rows.Add("Test"); 
    dt.Rows.Add("Test2"); 
    dt.Rows.Add("Test3"); 
    dt.Rows.Add("test1"); 
    dt.Rows.Add("test2"); 

    dt.CaseSensitive = true; // this will allow case sensitive sorting 
    dt.DefaultView.Sort = "Subject asc"; 

    grd.DataSource = dt; 
    grd.DataBind(); 
} 

欲瞭解更多詳情,請參閱此鏈接How to sort a DataView in a case-insensitive manner?

請註明此答案如果這能解決你的問題,這很有用

0

我認爲你必須使用Grid的排序事件做一個自定義排序: http://www.nullskull.com/a/866/aspnet--sorting-a-gridview-bound-to-a-custom-data-object.aspx

否則,如果你不想這樣做,只是有數據庫的所有小寫文本返回另一列。然後在gridview列中,你有當前的Test,Test2等等,在那裏顯示,有一個是一個隱藏標籤,並將排序設置爲該列。我沒有嘗試過,但它可能會工作,所以在那裏列ItemTemplate都有輸出,但只顯示一個,然後排序在隱藏的一個。