DataView 的FindRows 、Find可以做吗??如果可以,请给段代码!!

解决方案 »

  1.   

    使用 DataView 的 Find 和 FindRows 方法,您可以按照行的排序关键字值来对行进行搜索。Find 和 FindRows 方法中的搜索值是否区分大小写取决于基础 DataTable 的 CaseSensitive 属性。搜索值必须完全匹配现有排序关键字值才能返回结果。Find 方法返回一个整数,该整数表示匹配搜索条件的 DataRowView 的索引。如果多个行匹配搜索条件,则只返回第一个匹配 DataRowView 的索引。如果未找到匹配项,Find 将返回 -1。若要返回匹配多个行的搜索结果,可以使用 FindRows 方法。FindRows 的工作方式与 Find 方法类似,不同的只是 FindRows 返回引用 DataView 中所有匹配行的 DataRowView 数组。如果未找到匹配项,DataRowView 数组将为空。若要使用 Find 或 FindRows 方法,必须通过将 ApplyDefaultSort 设置为 true 或通过使用 Sort 属性来指定排序顺序。如果未指定排序顺序,则将引发异常。Find 和 FindRows 方法将一个值数组用作输入,该数组的长度与排序顺序所包含的列数相匹配。在对单个列进行排序的情况下,可以传递单个值。对于包含多个列的排序顺序,可传递一个对象数组。请注意,当对多个列进行排序时,对象数组中的值必须匹配在 DataView 的 Sort 属性中指定的列的顺序。以下代码显示对具有单个列排序顺序的 DataView 调用的 Find 方法。[Visual Basic]
    Dim custView As DataView = New DataView(custDS.Tables("Customers"), "", _
                                            "CompanyName", DataViewRowState.CurrentRows)Dim rowIndex As Integer = custView.Find("The Cracker Box")If rowIndex = -1 Then
      Console.WriteLine("No match found.")
    Else
      Console.WriteLine("{0}, {1}", _
                        custView(rowIndex)("CustomerID").ToString(), _
                        custView(rowIndex)("CompanyName").ToString())
    End If
    [C#]
    DataView custView = new DataView(custDS.Tables["Customers"], "", 
                                     "CompanyName", DataViewRowState.CurrentRows);int rowIndex = custView.Find("The Cracker Box");if (rowIndex == -1)
      Console.WriteLine("No match found.");
    else
      Console.WriteLine("{0}, {1}",
                        custView[rowIndex]["CustomerID"].ToString(),
                        custView[rowIndex]["CompanyName"].ToString());
      

  2.   

    另外DataView的RowFilter来做查询肯定可以实现查询int型的你在试一下
    custDV.RowFilter ="Price=2";就象这样.我机器上是可以实现的噢
      

  3.   

    这样其实还是String数据!
    我得Price字段是int类型,后面的类型是String
      

  4.   

    什么我得Price字段是int类型,后面的类型是String???
      

  5.   

    总是无法在 System.Int16 和 System.String 上执行“Like”操作。objDataView.RowFilter = Columns.SelectedItem.Value + " LIKE'*" + txtFind.Text + "*'";Columns.SelectedItem.Value是一个Dropdownlist
    txtFind是一个TextBox当Columns.SelectedItem.Value字段是一个String时显示正常
    而是byte或int时就出错了
      

  6.   

    在objDataView.RowFilter 前面用switch判断一下,如果是price,
    objDataView.RowFilter = Columns.SelectedItem.Value + " LIKE *" + txtFind.Text + "*";
    如果是别的字段
    objDataView.RowFilter = Columns.SelectedItem.Value + " LIKE'*" + txtFind.Text + "*'";
      

  7.   

    或者price时把上面的like换成=,去掉*,应该是可以的
      

  8.   

    FindRows  、Find怎么用,能给个例子吗?
      

  9.   

    参见:写得很详细
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconsearchingdataview.htm