我正在实现一个 gridview 来处理单个 sql server 数据库表。当我单击对列进行排序时,它首先按大写字母排序(例如,Test、Test2、Test3、test1、test2)。有没有办法操纵排序,使其按预期返回结果(例如,Test、test1、Test2、test2、Test3)?
问问题
608 次
2 回答
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();
}
有关更多详细信息,请参阅此链接如何以不区分大小写的方式对 DataView 进行排序?
如果这解决了您的问题,请将此答案标记为有用。
于 2013-05-01T12:06:15.887 回答
0
我认为您必须使用网格的排序事件来进行自定义排序: http ://www.nullskull.com/a/866/aspnet--sorting-a-gridview-bound-to-a-custom-data-object .aspx
否则,如果您不想这样做,只需让数据库返回包含所有小写文本的另一列。然后在 gridView Column 中,您可以在其中显示当前的 Test、Test2 等...,其中一个是隐藏标签并将排序设置为该列。我还没有尝试过,但它可能会起作用,所以在列中 ItemTemplate 有两个输出,但只显示一个,然后对隐藏的一个进行排序。
于 2013-04-30T18:21:30.810 回答