c# - 通过单击列进行排序返回 C# 中的所有列
问题描述
我有一个 gridview 表,它具有自动生成的列,并且这些列中的行可以通过单击列名进行排序,因为我启用了“AllowSorting”。我还有复选框列表,用户可以选中或取消选中以过滤表中的列。
问题是当用户将表过滤到他们想要的任何列然后单击任何列名时,它将按该列排序,但它会带回他们过滤掉的所有列。
我猜我需要创建一个类GridViewSortEventArgs
并让事件只抓取用户过滤的列,而不是选择数据库中的所有列。我试过这个,但我不知道我是否朝着正确的方向前进,但我也确实收到一个错误,GetSortColumnIndex()
说“并非所有代码路径都返回一个值”。SQLQueryBuilder()
显然为表构建查询。
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);
}
}
}
解决方案
并非所有代码路径都返回值
int GetSortColumnIndex()
{
foreach (DataControlField field in GridView1.Columns)
{
if (field.SortExpression == GridView1.SortExpression)
{
return GridView1.Columns.IndexOf(field);
}
}
}
你只返回一个值 if ,所以在你的方法末尾field.SortExpression == GridView1.SortExpression
添加 a 。return -1;
至于过滤值问题,您是否考虑了过滤
SQLQueryBuilder();
我的猜测是您正在从头开始重建查询。
推荐阅读
- javascript - 电子:复选框不改变值?
- android - 使用颤振进行实时图像处理
- c - 使用 fscanf 读取 txt 文件(fscanf 逐行读取字符串的问题)
- jhipster - 为什么我会使用 jpaDerivedIdentifier 获得“参照完整性约束违规”
- javascript - 由于某种原因,我的导航栏有滚动条?
- mongodb - Kafka 主题返回 0 条消息
- css - 我的 css 文件太大,因为 url-loader 正在将 .jpg 代码插入到 .css 文件中 - 如何配置 webpack 使其指向 img?
- c# - Tweetinvi 5.0 获取推文回复
- git - 使用 git clone 从 github 下载大型 lfs 文件时出现问题
- java - 如何在 Firestore 中构建关注系统