我对此很陌生,但我正在使用C#,并试图制作一个Windows窗体应用程序,其中只能显示数据表中的特定行。我正在使用断开连接的应用程序(将SQL数据库加载到数据集中),并试图仅显示特定列的值等于用户选择的数字的行。在Windows窗体应用程序中显示数据表中的特定行
什么是显示此信息的最佳方式? 如何只显示那些特定的行?
我对此很陌生,但我正在使用C#,并试图制作一个Windows窗体应用程序,其中只能显示数据表中的特定行。我正在使用断开连接的应用程序(将SQL数据库加载到数据集中),并试图仅显示特定列的值等于用户选择的数字的行。在Windows窗体应用程序中显示数据表中的特定行
什么是显示此信息的最佳方式? 如何只显示那些特定的行?
创建BindingSource ,绑定到你的DataTable,并使用Filter属性
只需展开@ghost的评论即可。退房http://stackoverflow.com/questions/5843537/filtering-datagridview-without-changing-datasource/10049875#10049875 –
您可以使用DataTable
Select
方法。
DataTable.Select Method (String)
获取符合过滤条件的所有DataRow对象的数组。
DataTable.Select Method (String, String)
获取匹配筛选条件, 在指定的排序顺序,所有DataRow对象的数组。
DataTable.Select Method (String, String, DataViewRowState)
获取匹配在 顺序匹配指定状态排序的过滤器的所有DataRow对象的数组。
或者您可以创建一个DataView
(msdn)。
使用这些方法的示例,您可以在上面给出的链接下找到它们。
绑定到列表框:
DataTable.Select:
DataTable myTable = new DataTable();
myTable.Columns.Add("Id", typeof(int));
myTable.Columns.Add("Name", typeof(string));
DataRow myNewRow = null;
for (int i = 0; i < 10; i++)
{
myNewRow = myTable.NewRow();
myNewRow["Id"] = i;
myNewRow["Name"] = "Name " + i.ToString();
myTable.Rows.Add(myNewRow);
}
DataRow[] Array = myTable.Select("Id > 5");
DataTable newTable = myTable.Clone();
foreach (var item in Array)
{
newTable.ImportRow(item);
}
listBox1.DataSource = newTable;
listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Name";
数据视图:
DataView custDV = new DataView(myTable,
"Id > 5",
"Name",
DataViewRowState.CurrentRows);
listBox1.DataSource = custDV;
listBox1.ValueMember = "Id";
listBox1.DisplayMember = "Name";
你的SQL数据源必须有某种方式来传递将要使用的参数在查询中,所以只有过滤的结果将被检索。虽然我建议使用基于对象的数据源而不是SQL。 –