C# 单击列进行排序返回C中的所有列#
我有一个gridview表,它有自动生成的列,这些列中的行可以通过单击列名进行排序,因为我启用了“AllowSorting”。我还有一些复选框列表,用户可以选中或取消选中这些复选框来过滤表中的列和表外的列 问题是,当用户将表筛选到他们想要的任何列,然后单击任何列名时,它将按该列排序,但会返回他们筛选出的所有列 我猜我需要用C# 单击列进行排序返回C中的所有列#,c#,asp.net,gridview-sorting,C#,Asp.net,Gridview Sorting,我有一个gridview表,它有自动生成的列,这些列中的行可以通过单击列名进行排序,因为我启用了“AllowSorting”。我还有一些复选框列表,用户可以选中或取消选中这些复选框来过滤表中的列和表外的列 问题是,当用户将表筛选到他们想要的任何列,然后单击任何列名时,它将按该列排序,但会返回他们筛选出的所有列 我猜我需要用GridViewSortEventArgs创建一个类,让事件只抓取用户筛选的列,而不是选择数据库中的所有列。我尝试了这个方法,但我不知道方向是否正确,但在GetSortColu
GridViewSortEventArgs
创建一个类,让事件只抓取用户筛选的列,而不是选择数据库中的所有列。我尝试了这个方法,但我不知道方向是否正确,但在GetSortColumnIndex()
上也出现了一个错误,说“并非所有代码路径都返回值”SQLQueryBuilder()
显然是为表btw生成查询
private void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
int sortColumnIndex = GetSortColumnIndex();
if (sortColumnIndex != -1)
SQLQueryBuilder();
}
int GetSortColumnIndex()
{
foreach (DataControlField field in GridView1.Columns)
{
if (field.SortExpression == GridView1.SortExpression)
{
return GridView1.Columns.IndexOf(field);
}
}
}
并非所有代码路径都返回值
如果field.SortExpression==GridView1.SortExpression
,则只返回一个值,因此添加一个return-1方法末尾的代码>
至于过滤值问题,您是否考虑了
SQLQueryBuilder();
我猜您是从头开始重建查询。所以对于筛选值问题,我是从头开始重建查询。是否需要创建标题鼠标单击事件并调用SQLQueryBuilder()
?基本上,让列标题鼠标单击事件与我的btnSearch\u click
事件完全相同,然后在其中放入一个函数进行排序,这样做是否可行?
SQLQueryBuilder();