在下面的排序代码中,怎样使它按数字排序而不是按字符串排序

qq_32065643 2016-10-12 09:06:58
protected void gvDataInfo_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
foreach (TableCell tc in e.Row.Cells)
{
if (tc.Controls.Count > 0)//这里要判断一下此时是不是已经生成了linkbutton
{
string s1 = ((LinkButton)tc.Controls[0]).Text;
((LinkButton)tc.Controls[0]).Text = s1.Replace(s1, s1 + "<font face='Webdings'>↑</font>");
}
if (tc.Controls.Count > 0 && tc.Controls[0].GetType().ToString() == "System.Web.UI.WebControls.DataControlLinkButton")
{
if (((LinkButton)tc.Controls[0]).CommandArgument == SortExpression)
{
string s2 = ((LinkButton)tc.Controls[0]).Text;
if (SortDirection == "DESC")
{
((LinkButton)tc.Controls[0]).Text = s2.Replace("↑", "↓");
}
}
}
}
}
}
protected void gvDataInfo_Sorting(object sender, GridViewSortEventArgs e)
{
//得到排序条件
SortExpression = e.SortExpression.ToString();
//设置排序为升序
SortDirection = "ASC";
//当前排序为升序时,修改成降序
if (this.gvDataInfo.Attributes["SortDirection"] == "ASC")
{
SortDirection = "DESC";
}
//设置GridView的排序状态
this.gvDataInfo.Attributes["SortExpression"] = SortExpression;
this.gvDataInfo.Attributes["SortDirection"] = SortDirection;
BindGridView();
}
private void BindGridView()
{
string sortExpression = this.gvDataInfo.Attributes["SortExpression"];
string sortDirection = this.gvDataInfo.Attributes["SortDirection"];
//DataTable dt = getDB();//怎么获得dt_Sourse
if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
{
dt_Source.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
}
this.gvDataInfo.DataSource = dt_Source;
this.gvDataInfo.DataBind();
}

这是ASP.NET C#中的代码。gvDataInfo是前台控件 ,dt_Source是数据源,它是经过增加行以及列再往里赋值得到的一张表。能实现排序功能,但是只能按字符串排序,而不是按数字排序。应该怎么增加代码,使它按数字排序??还有就是我选中某列的时候,能不能给它加上颜色,区分选中和未选中的列??
好像前台也可以实现排序,因为我这个表已经读到ASP.net网页上面了,只需在网页上进行排序就行了,不需要再去数据库里面查询了。有没有会前台排序的?点击某列,它显示出箭头并点击排序,其他列不变。
...全文
511 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2016-10-13
  • 打赏
  • 举报
回复
可以在前台实现排序,jquery 有很多这样的插件,比如这个:http://tablesorter.com/docs/
  • 打赏
  • 举报
回复
datatable也可以通过linq进行排序的,但排序后的集合可以通过哪个方法再转回DataTable忘了…… 更靠谱的做法还是数据库里排序吧,你可以通过convert函数转化为数字
qq_32065643 2016-10-12
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你这数据不是数据库来的?那为啥要用DataTable? List<T>这种的话直接Linq排就行了
数据是数据库经过计算后来的 但是是多个数据库里的表得来的数据
  • 打赏
  • 举报
回复
你这数据不是数据库来的?那为啥要用DataTable? List<T>这种的话直接Linq排就行了
qq_32065643 2016-10-12
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
datatable也可以通过linq进行排序的,但排序后的集合可以通过哪个方法再转回DataTable忘了…… 更靠谱的做法还是数据库里排序吧,你可以通过convert函数转化为数字
关注数据库里没有我这个表啊

62,270

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧