2013-04-29 69 views
0

我有一個員工姓名的數據視圖。當我在過濾框中鍵入「na」時,會出現這個結果。過濾並排序的ASC訂單。如何根據輸入字符串對數據視圖進行排序?

Amina 
Anna 
Masud Rana 
Nasima 

但我希望它根據我的輸入字符串「na」排序。預期結果是這樣的

Nasima 
Anna 
Amina 
Masud Rana 

日Thnx任何建議:)

+0

你知道使用Sort Method ..嗎? 'this.GridView1.Sort(this.dataGridView1.Columns [「你想排序的列名」],ListSortDirection.Ascending);' – MethodMan 2013-04-29 04:15:54

+0

是的,我已經使用這種排序。 TransferEmployeeFilterView.Sort =「EmployeeName」;但是這給了我按字母順序排序的結果。這給了我在這裏提到的第一個結果。但我想獲得第二個結果,它不會根據輸入字符串(「na」)在我的過濾器框中對asc/desc進行排序。 – 2013-04-29 04:26:03

+0

@AnupamRoy我認爲這種排序,你必須使用「喜歡」通配符在您的查詢,而不是DataView.May你PLZ顯示你的「搜索」查詢... – Rahul 2013-04-29 05:49:23

回答

0
  1. 與過濾排序是不可能直接與智能感知的數據視圖提供的擴展方法,在數據視圖排序的結果會按字母順序而已, 然而,爲了滿足您的要求,我已經創建了自己的extention方法的DataTable

    public static DataTable Sort(this DataTable dt, string ColumnName, string param) 
    { 
        DataTable dtCopy = new DataTable(); 
        List<DataRow> list = dt.Rows.Cast<DataRow>().ToList(); 
        list.Sort((x, y) => Convert.ToString(x[ColumnName]).ToLower().IndexOf(param).CompareTo(Convert.ToString(y[ColumnName]).ToLower().IndexOf(param))); 
        dtCopy = list.CopyToDataTable(); 
        return dtCopy; 
    } 
    

    這將整理與過濾參數的數據(你的情況「NA」)

    //ColumnName is EmployeeName In your Case and filter text is txtSearchValue.Text 
    DataTable dt2 = table.Sort("ColumnName", txtSearchValue.Text); 
    DataView dv = dt2.DefaultView; 
    
  2. 您的需求可以通過其他方法通過使用lambda表達式B相識,並在非常小的代碼,

    DataTable dt3 = table.Rows.Cast<DataRow>().OrderBy(s => Convert.ToString(s["ColumnName"]).IndexOf(txtSearchValue.Text)).CopyToDataTable(); 
    DataView dv = dt3.DefaultView; 
    
相關問題