- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 dataView.RowFilter 时,我总是得到过滤结果,包括数据集的最后一个元素。
我有一个测试数据集:
private TestClass[] items =
{
new TestClass{name = "Hans", age = 10 },
new TestClass{name = "Bert", age = 5 },
new TestClass{name = "Gerda", age = 41 },
new TestClass{name = "Dolf", age = 73 },
new TestClass{name = "Ludo", age = 35 },
};
创建数据 View :
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Columns.Add("TestItem", typeof(TestClass));
DataView dataView = new DataView(dataTable);
foreach(var item in items)
{
dataView.AddNew(item.name, item.age, item);
}
设置过滤器和数据源:
dataView.RowFilter = "[Name] = 'Hans'";
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "TestItem";
comboBox1.DataSource = dataView;
这应该只返回 Hans 作为结果,但对我来说这给出了结果:汉斯和卢多。
如果我过滤“Ludo”,结果只会是“Ludo”。为什么它总是返回最后一个元素,我如何确保它只返回过滤后的集合?
-编辑
public static class DataViewExtensions
{
public static DataRowView AddNew(this DataView dataView, params object[] parameters)
{
DataRowView dataRowView = dataView.AddNew();
int index = 0;
foreach (var parameter in parameters)
{
dataRowView[index++] = parameter;
}
return dataRowView;
}
}
最佳答案
有一个异常(exception),其他人似乎得到了
DataTable must be set prior to using DataView
(我建议你把它放在搜索引擎中)
虽然你没有得到异常,但你应该遵循这个顺序。
幸运的是,在 DataView 之前设置 DataTable 可以用更少的代码完成,并且没有扩展方法。
TestClass[] items =
{
new TestClass{name = "Hans", age = 10 },
new TestClass{name = "Bert", age = 5 },
new TestClass{name = "Gerda", age = 41 },
new TestClass{name = "Dolf", age = 73 },
new TestClass{name = "Ludo", age = 35 },
};
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Age", typeof(int));
dataTable.Columns.Add("TestItem", typeof(TestClass));
// set up the DataTable first
foreach (var item in items)
{
dataTable.Rows.Add(item.name, item.age, item);
}
// then use the DataView
DataView dataView = new DataView(dataTable);
dataView.RowFilter = "[Name] = 'Hans'";
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "TestItem";
comboBox1.DataSource = dataView;
关于c# - DataView rowfilter 始终包含集合中的最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187437/
我对 RowFilter 有疑问( its ComparisonType ) 放在一起 正则表达式(字符串)、数字、日期 连同 与、或、或非 不知道怎么办 处理 AND、OR、NOR 的空值 如果 R
我无法完全让它发挥作用,而且我发现的示例仅适用于单个 RowFilter.andFilter 或 RowFilter.orFilter。有没有办法将两者结合起来得到类似 (A || B) && (C
我正在为我的表创建一个带有 JavaScript 的 RowFilter,一切正常,但是当搜索输入中的文本不匹配时,我想显示一条消息(未找到结果...在 的表内) )但我不知 Prop 体该怎么做,这
毫无疑问,这将是一个简单的解决方案,但像往常一样,我被难住了。 我正在尝试使用 JCheckBox 过滤掉 JTable 中不可渲染的字体系列名称。 JTable 包含已安装的字体系列名称(第 0 列
我正在使用扩展 RowFilter 的自定义类来根据列中的 boolean 值过滤我的表 public class MyRowFilter extends RowFilter { @Overr
我想将数据 View rowfilter 值转换为数据表。我有一个有值(value)的数据集。现在我正在使用数据 View 过滤值。现在我想将数据 View 过滤器值转换为数据表。请帮我复制它....
我将尝试为 JXTreeTable 实现 RowFilter,但它不起作用。我的实现是这样的: public class CustomRowFilter extends RowFilter { @Ov
我有一个填充的 JTable 并有一个不区分大小写的行过滤器: RowFilter rf = RowFilter.regexFilter("(?i)"+filterText.getText(), 0)
我将 RowFilter.regexFilter(...) 应用于我的表,但对 Integer 列的过滤无法正常工作。我发现在 RowFilter.RegexFilter.include() 中,要评
我正在使用这段代码来过滤我的行: (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Forma
我在数据 View 行过滤器中遇到了一个小问题。如何处理数据 View 行过滤器中的文本框空值。我在此过滤器中使用 OR 运算符。请在这个问题上帮助指导我。到目前为止,我使用下面的代码。 Column
我在将 RowFilter 应用于 DataGridView 时遇到问题。我确实需要使用 IN 和 NOT IN 应用 RowFilter。 例子: custId in (select custId
此表仅存在于内存中,因此无法进行快速 SQL 查询。 我需要在数据表的列中找到最长的字符串。 由于处理的表的大小,我不能只进行原始的逐行大小检查,而是必须使用 RowFilter。 我试过这些: d
我正在尝试在 gridview 中搜索数据库。当我在文本框中键入任何内容时,出现此错误: syntax error missing operand before 'like' operator 这是代
使用 dataView.RowFilter 时,我总是得到过滤结果,包括数据集的最后一个元素。 我有一个测试数据集: private TestClass[] items = { new Tes
我目前正在使用以下内容来过滤我的 JTable RowFilter.regexFilter( Pattern.compile(textField.getText(),
我尝试为 JTable 创建行过滤器以限制表中显示的行数。 RowFilter 代码很简单。它将模型行号转换为 View 行号(如果表格已排序),然后检查 View 行号是否小于表格中要显示的行数:
我有一个 DataView,我正尝试根据动态字符串进行过滤: dv.RowFilter = "ContentTitle = '" + titleFilter + "'"; 在某些情况下,titleFi
我想知道是否有任何可能的方法在提供单个字符匹配的 DataView 上应用 RowFilter? 例如DataView.RowFilter = "SOME_COL 喜欢 'A_BCD%'; 其中下划线
我想知道是否有任何可能的方法在提供单个字符匹配的 DataView 上应用 RowFilter? 例如DataView.RowFilter = "SOME_COL 喜欢 'A_BCD%'; 其中下划线
我是一名优秀的程序员,十分优秀!