2015-07-10 110 views
-1

我有一個中繼器控制將綁定頁面加載的內容。枚舉通過數據源

repeater.DataSource = Build<Model>(query); 
repeater.DataBind(); 

!!重要說明:爲簡潔起見,代碼已被縮小。

Build<Model>將建立數據庫中的數據,這將返回到DataSource,我綁定所以它在頁面上可見的IEnumerable

在前端我有一個按鈕來觸發通過DataSource的搜索以重新結合過濾結果。

有沒有可能做一些事情:

IEnumerable<...> enumerator = repeater.DataSource.GetEnumerator(); 

類似的規定?這樣,我可以循環瀏覽內容,然後重新篩選一個過濾列表?

回答

0

將數據源存儲爲稍後訪問的字段可能更容易。

public class MyForm 
{ 
    private MyDataSourceType myDataSource = null; 

    private void SetDataModel() 
    { 
     myDataSource = Build<Model>(query); 
     repeater.DataSource = myDataSource 
     repeater.DataBind(); 
    } 

    private void FilterDataSet() 
    { 
     IEnumerable<MyDataType> enumerated = myDataSource.GetEnumerator(); 
     var filteredDataSource; // Filter Logic here 
     repeater.DataSource = filteredDataSource; 
     repeater.DataBind(); 
    } 
} 

請記住,這是基於您非常簡短的代碼片段的僞代碼。

編輯: 要使用數據源的工作,你可以試試這個:

private void FilterDataSet() 
    { 
     List<MyDataType> myDataSource = repeater.DataSource as List<MyDataType>; 
     // Null check here 
     IEnumerable<MyDataType> enumerated = myDataSource.GetEnumerator(); 
     var filteredDataSource; // Filter Logic here 
     repeater.DataSource = filteredDataSource; 
     repeater.DataBind(); 
    } 

這將需要repeater.DataSource(對象的類型),並嘗試投放到列表(或任何其他它是)。做一個空檢查,然後GetEnumerator()並過濾掉。

+0

我在想,但認爲訪問數據源會更乾淨。 – Greg

+0

檢查我的編輯如何可以工作。 –