2011-07-06 62 views
0

我的項目有一個GridView來顯示一些信息。該GridView有一些OnRowDataBound處理來處理數據。我想要做的是將生成的GridView複製到DataTable中,以便生成CSV文件。當用戶點擊按鈕時會生成CSV。所以GridView在屏幕上並且填充併發生回發。 GridView不會在PostBack上重新綁定。推薦的方法是什麼?這裏是我目前正在嘗試的代碼,但我只是結束了標題和空白行。調試確認了row.Cells [i] .Text是空的,即使標題正確並且行數與我的GridView包含的行數相同。如何在gridback中將gridview內容複製到數據表中

DataTable dataTable = new DataTable("export"); 

foreach (DataControlField column in myGV.Columns) 
{ 
    dataTable.Columns.Add(new DataColumn { ColumnName = column.HeaderText }); 
} 

foreach (GridViewRow row in myGV.Rows) 
{ 
    DataRow dataRow = dataTable.NewRow(); 
    for (int i = 0; i < row.Cells.Count; i++) 
    { 
     dataRow[myGV.Columns[i].HeaderText] = row.Cells[i].Text; 
    } 
} 

回答

1

您需要使用綁定到GridView的數據對象,而不是GridView。綁定後,gridview中的數據沒有掛鉤。

+1

+1 @William:附加說明:如果頁面啓用(或將要啓用),那麼DataTable的行將只包含當前可見的DataSize的PageSize數量。因此,推薦的方法是在想要將其導出到CSV時再次從數據庫加載數據。 –

+0

好的,謝謝。我的數據源(對象列表)具有我不需要的額外字段,而GridView OnDataBound事件操縱數據。如果我在回發上重新綁定GridView,我可以訪問GridView中的某種內部DataTable以使我的電子表格從?我想我的另一種選擇是創建一個返回數據表的方法,然後將它用於我的電子表格和GridView。 – William

相關問題