ASP.NET Gridview不区分大小写的列排序

时间:2013-04-30 18:03:38

标签: asp.net sql-server gridview webforms

我正在实现gridview来处理单个sql server数据库表。当我单击以对列进行排序时,它首先使用大写字母(例如,Test,Test2,Test3,test1,test2)。有没有办法操纵排序,以便按预期返回结果(例如Test,test1,Test2,test2,Test3)?

2 个答案:

答案 0 :(得分: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?

如果这可以解决您的问题,请将此答案标记为有用。

答案 1 :(得分:0)

我认为你必须使用Grid的Sorting事件来进行自定义排序: http://www.nullskull.com/a/866/aspnet--sorting-a-gridview-bound-to-a-custom-data-object.aspx

否则,如果您不想这样做,只需让数据库返回另一个包含全部小写文本的列。然后在gridView列中,你有当前的Test,Test2等......在那里显示,有一个是隐藏的标签,并将排序设置为该列。我没有尝试过这个但它可能有用,所以在那个列中,ItemTemplate既有输出但只显示一个,然后对隐藏的那个进行排序。