2012-02-23 6 views
3

dataview rowfilterの値をdatatableに変換したいとします。私は価値のあるデータセットを持っています。今私はdataviewを使用して値をフィルタリングしていました。今私は私がそれをコピーするのに役立ちdatatable.pleaseするデータビューフィルタ値を変換したい........dataview rowfilterの値からdatatableへの変換

私の部分のコードはここにある:

DataSet5TableAdapters.sp_getallempleaveTableAdapter TA = new DataSet5TableAdapters.sp_getallempleaveTableAdapter(); 
    DataSet5.sp_getallempleaveDataTable DS = TA.GetData(); 
     if (DS.Rows.Count > 0) 
     { 
      DataView datavw = new DataView(); 
      datavw = DS.DefaultView; 
      datavw.RowFilter = "fldempid='" + txtempid.Text + "' and fldempname='" + txtempname.Text + "'"; 
      if (datavw.Count > 0) 
      { 
       DT = datavw.Table; // i want to copy dataview row filter value to datatable 

      } 
     } 

私を助けてください...

+0

あなたは、直接 –

答えて

5

あなたは、私が表現の列を持っているので、答えは私の状況では動作しません

if (datavw.Count > 0)    
    {     
    DT = datavw.ToTable(); // This will copy dataview's RowFilterd values to datatable    
    } 
+0

はそんなにありがとうdataview.rowfilterする必要がDataColumn.Expressionを使用することはできません。.. – Fernando

3

DateView.ToTable()を使用すると、フィルタ処理されたデータビューをデータテーブルに変換できます。

DataTable DTb = new DataTable(); 
DTb = SortView.ToTable(); 
1

を使用することができます。 DataView.ToTable()は、式ではなく値のみをコピーします。

まず私はこの試みた:

//clone the source table 
DataTable filtered = dt.Clone(); 

//fill the clone with the filtered rows 
foreach (DataRowView drv in dt.DefaultView) 
{ 
    filtered.Rows.Add(drv.Row.ItemArray); 
} 
dt = filtered; 

をしかし、そのソリューションは、ただでさえ1000行のために、非常に遅かったです。私のために働いた

解決策は以下のとおりです。

//create a DataTable from the filtered DataView 
DataTable filtered = dt.DefaultView.ToTable(); 

//loop through the columns of the source table and copy the expression to the new table 
foreach (DataColumn dc in dt.Columns) 
{ 
    if (dc.Expression != "") 
    { 
     filtered.Columns[dc.ColumnName].Expression = dc.Expression; 
    } 
} 
dt = filtered; 
関連する問題