我是新手,但我正在使用 C#,并且正在尝试制作一个 Windows 窗体应用程序,在该应用程序中我只能显示数据表中的特定行。我正在使用断开连接的应用程序(将 SQL 数据库加载到数据集中),并且我试图仅显示特定列的值等于用户选择的数字的行。
显示此信息的最佳方式是什么?我如何只显示那些特定的行?
创建BindingSource ,绑定到您的 DataTable 并使用 Filter 属性
你可以使用DataTable
Select
方法。
获取与筛选条件匹配的所有 DataRow 对象的数组。
以指定的排序顺序获取与筛选条件匹配的所有 DataRow 对象的数组。
DataTable.Select 方法(字符串、字符串、DataViewRowState)
按与指定状态匹配的排序顺序获取与筛选器匹配的所有 DataRow 对象的数组。
或者您可以创建一个DataView
( msdn )。
您可以在我上面提供的链接下找到使用这些方法的示例。
绑定到列表框:
数据表.选择:
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";