2013-07-13 27 views
1

我对此很陌生,但我正在使用C#,并试图制作一个Windows窗体应用程序,其中只能显示数据表中的特定行。我正在使用断开连接的应用程序(将SQL数据库加载到数据集中),并试图仅显示特定列的值等于用户选择的数字的行。在Windows窗体应用程序中显示数据表中的特定行

什么是显示此信息的最佳方式? 如何只显示那些特定的行?

+1

你的SQL数据源必须有某种方式来传递将要使用的参数在查询中,所以只有过滤的结果将被检索。虽然我建议使用基于对象的数据源而不是SQL。 –

回答

2

创建BindingSource ,绑定到你的DataTable,并使用Filter属性

+0

只需展开@ghost的评论即可。退房http://stackoverflow.com/questions/5843537/filtering-datagridview-without-changing-datasource/10049875#10049875 –

1

您可以使用DataTableSelect方法。

DataTable.Select Method (String)

获取符合过滤条件的所有DataRow对象的数组。

DataTable.Select Method (String, String)

获取匹配筛选条件, 在指定的排序顺序,所有DataRow对象的数组。

DataTable.Select Method (String, String, DataViewRowState)

获取匹配在 顺序匹配指定状态排序的过滤器的所有DataRow对象的数组。

或者您可以创建一个DataViewmsdn)。

使用这些方法的示例,您可以在上面给出的链接下找到它们。

绑定到列表框:

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"; 
+0

我可以然后显示列表框中的数组? –

+0

@ user2579701是的,你可以。再次检查我的答案:) – kmatyaszek

+0

感谢这就是我所需要的 –

相关问题