在asp.net中排序gridview的列c#
任何人都可以告诉函数在c#asp.net中对gridview的列进行排序。
gridview的数据绑定来自使用linq创建的datacontext。 我想单击列的标题来对数据进行排序。
谢谢!
要做到这一点,您需要做两件事。
- 保持排序状态为viewstate(SortDirection和SortExpression)
- 您可以根据当前的排序状态生成正确的linq表达式。
手动处理网格中的Sorting事件并使用我编写的这个帮助器按SortExpression和SortDirection排序:
public static IQueryable SortBy (IQueryable source, string sortExpression, SortDirection direction) { if (source == null) { throw new ArgumentNullException("source"); } string methodName = "OrderBy"; if (direction == SortDirection.Descending) { methodName += "Descending"; } var paramExp = Expression.Parameter(typeof(T), String.Empty); var propExp = Expression.PropertyOrField(paramExp, sortExpression); // p => p.sortExpression var sortLambda = Expression.Lambda(propExp, paramExp); var methodCallExp = Expression.Call( typeof(Queryable), methodName, new[] { typeof(T), propExp.Type }, source.Expression, Expression.Quote(sortLambda) ); return (IQueryable )source.Provider.CreateQuery(methodCallExp); }
db.Products.SortBy(e.SortExpression,e.SortDirection)
查看我的博客文章 ,了解如何执行此操作:
https://msdn.microsoft.com/en-us/library/ms745786.aspx
https://aspnet.4guysfromrolla.com/articles/012308-1.aspx
有关在gridview中排序的更多信息可以在这里找到: MSDN Gridview排序用于获取数据的方法无关紧要,可以使用相同的排序。
加:
AllowSorting="true"
到
标签,应该这样做
当我这样做时,它会给出一个错误“GridView’GridView1’触发事件排序,但没有处理。
我之前已经发生了这种情况……我刚刚创建了一个一次性处理程序,然后一切似乎都开始了。 不是最漂亮的解决方案,但它对我有用。
也就是说,我没有在GridView代码中看到任何对数据源的引用。 你需要这样的东西:
然后在你的GridView中:
在“属性”面板中,双击“排序条目”。 将创建一个新函数。 在此函数中编写代码以填充Gridview。 唯一的区别是基于GridViewSortEventArgs e更改查询
e.SortExpression和
e.SortDirection总是升序:-(
我希望这个非常简短的答案有帮助
用于SQL查询的半伪代码
上述就是C#学习教程:在asp.net中排序gridview的列c#分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
string Query= string.Empty; string SortExpression = string.Empty; // HDFSort is an HiddenField !!! protected void SortCommand_OnClick(object sender, GridViewSortEventArgs e) { SortExpression = e.SortExpression; Query = YourQuery + " ORDER BY "+SortExpression +" "+ HDFSort.Value ; HDFSort.Value = HDFSort.Value== "ASC" ? "DESC" : "ASC"; RefreshGridView(); } protected void RefreshGridView() { GridView1.DataSource = DBObject.GetData(Query); GridView1.DataBind(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1026606.html