2011-01-18 5 views
3

У меня есть DataView, который был заполнен списком файлов из таблицы базы данных. Я хочу выполнить итерацию через DataView, чтобы увидеть, есть ли там какие-либо файлы определенного типа, и если да, сделайте что-нибудь с этой записью, а затем удалите ее из DataView.Удалить запись из DataView

Я закодировал это следующим образом, но что-то не хватает - я могу перебирать объект, а затем удалять из него объект, так как это повлияет на итератор.

Любые предложения?

DataView dv = new DataView(); 
dv = ds.Tables[3].DefaultView; 
dlFiles.DataSource = dv; 
dlFiles.DataBind(); 
for (int j = 0; j < dv.ToTable().Rows.Count; j++) { 
    if (dv.ToTable().Rows[j]["FilePath"].ToString().ToLower().Contains(".pdf")) { 
     //do something with this record and remove it from the dataview 
    } 
} 

Как примечание, dlFiles является DataList используется для отображения элементов в DataView. Удаленные файлы отображаются по-разному, и поэтому не следует ссылаться при итерации через DataList.

ответ

2

Мы можем сделать так,

DataView dv = new DataView(); 
    dv = ds.Tables[3].DefaultView;  
    for (int j = 0; j < dv.ToTable().Rows.Count; j++) 
    { 
    if (dv.ToTable().Rows[j]["FilePath"].ToString().ToLower().Contains(".pdf")) 
    { 
     dv.Table.Rows.RemoveAt(j); 
     dv.AcceptChanges(); 
    } 
    }    
0

Ну, используйте новый объект, такой как datatable, скопируйте новые данные в этот тип данных и привяжите свой контроль.

Смежные вопросы