2012年10月25日 星期四

[C# ASP.Net] 在GridView Bind 資料之前做資料的過濾

        有時候從DB取出資料後想再對資料做些手腳,像是過濾、排序或者是只想秀出前幾筆的資料。這些都可以透過DataView來幫你完成。

        通常我取到的都是DataTable型態的資料,所以必需先把資料轉成DataView的型態資料,如下:DataView dataView = new DataView(dataTable);

  DataView型態的資料就可以有過濾、排序方法可以使用囉!


        過濾:
   過濾的用法就像是在SQL下Where指令一樣,例如:
                dataView.RowFilter = "UserName = '%Johnson%'";
            RowFilter就會找到CloumnName為UserName的資料列,比對內容為Johnson才會記在dataView中,其它的資料就會被移除。過濾後再指dataView指定為GridView的DataSource再Bind後就可以看到過濾後的結果了。當然也可以使用like來過濾含有指定字串的都要顯示,指令如下:
    dataView.RowFilter = "UserName like '%John%'";
這個就會列出UserName欄位中,只要含有字串John的都會被顯示出來。


        排序:
            可以使用Sort屬性,對單一或多個資料行做排序,並且可以加入ASCDESC參數。


        只顯示前幾筆資料
            如果有需要只顯示前幾筆資料的話,我使用的方法是Delete,例如我有100筆資料,只想顯示前50筆那就用Delete把第50筆之後的資料全部都Delete。範例如下:
        int showDataNum = 50;
        int rowCount = dataView.Count; //100筆
        if(rowCount > showDataNum)
        {
             for(int i = showDataNum; i < rowCount; i++)
                 dataView.Delete(showDataNum);
         }


沒有留言:

張貼留言