如何不依赖列名筛选DataGridView的第一列?
获取DataView第一列名称并设置筛选条件
直接通过DataView关联的DataTable来获取第一列名称即可,具体实现如下:
- 先从
dv2的Table属性拿到对应的DataTable,再通过Columns[0]获取第一列对象,提取它的ColumnName作为变量 - 为了避免列名含空格/特殊字符导致语法错误,记得用方括号
[]包裹列名
基础实现代码
// 获取第一列名称 string firstColumn = dv2.Table.Columns[0].ColumnName; // 构建筛选条件 dv2.RowFilter = $"[{firstColumn}] LIKE '{FilterByBox.Text}*'";
如果习惯用字符串拼接写法,也可以这样写:
string firstColumn = dv2.Table.Columns[0].ColumnName; dv2.RowFilter = "[" + firstColumn + "] LIKE '" + FilterByBox.Text + "*'";
额外注意事项
- 空值与列数判断:避免因
dv2.Table为空或无列导致异常,建议加判断:
if (dv2?.Table != null && dv2.Table.Columns.Count > 0) { string firstColumn = dv2.Table.Columns[0].ColumnName; dv2.RowFilter = $"[{firstColumn}] LIKE '{FilterByBox.Text}*'"; }
- 单引号转义:如果输入文本可能包含单引号,会破坏筛选语句语法,需要转义(把单个单引号替换为两个):
string safeFilterText = FilterByBox.Text.Replace("'", "''"); dv2.RowFilter = $"[{firstColumn}] LIKE '{safeFilterText}*'";
内容的提问来源于stack exchange,提问作者Angela
相关产品推荐
相关产品推荐

