失焦根据条件,在排序。
datagridview 是数据源是一个datatable ,我现在的做法是,直接用select()方法. 得到like 和no like 
的数据。在merger() ..有没有更好的办法。c#VB.net

解决方案 »

  1.   

    datatable.DefaultView.RowFilter = "rname like '%" + textBox.Text + "%'";
    datagridview.datasource = datatable;
      

  2.   

    string.format("rname like '%{0}%'",textbox.text)
      

  3.   

    如果是我, 可能会这么做,再加个 sort 列。 如果like 到了 就给这列赋值。然后排序 sort 列
      

  4.   

     string text = this.textBox1.Text;
                    DataTable dt = CreateDataTable();                dt = dt.AsEnumerable().OrderByDescending(a => a.Field<string>("name").Contains(text)).CopyToDataTable();
                    this.dataGridView1.DataSource = dt;
      

  5.   


    虽然没用过linq.但是看代码目测 是这个意思试了下。没效果啊。。 CreateDataTable() 有这个方法吗?
    我3.5环境的额
      

  6.   


    需要引用 System.Data.DataSetExtensions
      

  7.   


    需要引用 System.Data.DataSetExtensions
    引用了 System.Data.DataSetExtensions  ,。。,但没有这个方法
      

  8.   

    没引用linq吧
    using system.linq
      

  9.   

    如果说数据源是DataTable 
    CreateDataTable 返回的是你绑定在dataGridView1的数据源string text = this.textBox1.Text;
                    DataTable dt = (DataTable)this.dataGridView1.DataSource;
                    
                    dt = dt.AsEnumerable().OrderByDescending(a => a.Field<string>("name").Contains(text)).CopyToDataTable();
                    this.dataGridView1.DataSource = dt;
      

  10.   

    有。
    是在DataSetExtensions 里面的DataTableExtensions吧?你看图。没有
      

  11.   

    你是说没这个CreateDataTable啊他只是举例你获取内容添加到dt里面而已。。
      

  12.   

    你是说没这个CreateDataTable啊他只是举例你获取内容添加到dt里面而已。。
     好吧 ,我错了
    但是我试过了。排序并没有变
      

  13.   

    你是说没这个CreateDataTable啊他只是举例你获取内容添加到dt里面而已。。
     好吧 ,我错了
    但是我试过了。排序并没有变发错的图居然不是x照,
    不能啊, 我这试过可以排序的。
      

  14.   


    代码如下。。我转成vb版了。。
     Dim da1 As DataTable = New DataTable
            da1.Columns.Add("id")
            da1.Columns.Add("name")
            da1.Columns.Add("su", Type.GetType("System.Decimal"))
            Dim dr As DataRow = da1.NewRow()        dr("id") = 1
            dr("name") = "张三"
            dr("su") = 10.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 2
            dr("name") = "李四"
            dr("su") = 20.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 3
            dr("name") = "王武"
            dr("su") = 30.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 4
            dr("name") = "赵柳"
            dr("su") = 30.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 5
            dr("name") = "呵呵"
            dr("su") = 40.0
            da1.Rows.Add(dr)
            da1 = da1.AsEnumerable().OrderByDescending(Function(a) a.Field(Of String)("name").Contains(Text)).CopyToDataTable()
            DataGridView1.DataSource = da1
    但是没有效果哦。并没有排序。。
      

  15.   


    你是说没这个CreateDataTable啊他只是举例你获取内容添加到dt里面而已。。
     好吧 ,我错了
    但是我试过了。排序并没有变发错的图居然不是x照,
    不能啊, 我这试过可以排序的。那我建个c#项目试试不知道是不是vb是不是这样写
      

  16.   


    C#还真可以。。但是能帮我把   dt = dt.AsEnumerable().OrderByDescending(a => a.Field<string>("name").Contains(text)).CopyToDataTable();
    这句 转下vb写法么
      

  17.   

    你用的反编译的是Reflector 还是ILSpy,C#可以转换成VB
      

  18.   

    vb真心不行。c#真心可以
       Dim text As String = Me.TextBox1.Text
            Dim dt As DataTable = Me.DataGridView1.DataSource
            dt = dt.AsEnumerable().OrderByDescending(Function(a) a.Field(Of String)("name").Contains(text)).CopyToDataTable()
            DataGridView1.DataSource = dt
    看看有错么、、 "rname" 列 我已经改成“name”列了。
      

  19.   

    vb转c# 还需要 什么反编译器么 大致手打。。不会的就去网站查
      

  20.   

    Public Class Form1    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim text As String
            text = TextBox1.Text        Dim da1 As DataTable = New DataTable
            da1 = CType(DataGridView1.DataSource, DataTable)
            da1 = da1.AsEnumerable().OrderByDescending(Function(a) a.Field(Of String)("name").Contains(text)).CopyToDataTable()
            DataGridView1.DataSource = da1
        End Sub    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim da1 As DataTable = New DataTable
            da1.Columns.Add("id")
            da1.Columns.Add("name")
            da1.Columns.Add("su", Type.GetType("System.Decimal"))
            Dim dr As DataRow = da1.NewRow()        dr("id") = 1
            dr("name") = "张三"
            dr("su") = 10.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 2
            dr("name") = "李四"
            dr("su") = 20.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 3
            dr("name") = "王武"
            dr("su") = 30.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 4
            dr("name") = "赵柳"
            dr("su") = 30.0
            da1.Rows.Add(dr)        dr = da1.NewRow()
            dr("id") = 5
            dr("name") = "呵呵"
            dr("su") = 40.0
            da1.Rows.Add(dr)
            DataGridView1.DataSource = da1
        End Sub
    End Class
      

  21.   


    我发现问题的根源了刚我转都也没错,是vs2008不行。我刚用vs2010试了下。。vb,C#都可以
      

  22.   


    。。我错了。。、
    只能用4个英文字母来形容你。。就是
    NCIE