將GridView的資料來源轉換為DataTalbe

2021-09-22 21:04:17 字數 2281 閱讀 7223

應用場景描述:

主要應用於將gridview的資料匯出到excel。

問題描述:

直接獲取gridview資料來源時,如果分頁功能(allowpaging)為true時,則只能獲取到第乙個頁面中的資料。

解決辦法: 

先將分頁功能alallowpaging設為false,

然後,獲取gridview資料來源的資料到datatable。datatable最好快取到veiwstate中,否則頁面重新整理後,datatable中的資料就會清空。

其次,將分頁功能alallowpaging設為true,

最後,再繫結一次gridview資料來源。

這樣,就可以獲取到所有資料了! 

附:筆者是將轉換方法單獨封裝到了乙個公共類裡了。

public class datatablehelper

public static string getcelltext(tablecell cell)

string text = cell.text;

if (!string.isnullorempty(text))

return text;

foreach (control control in cell.controls)

if (control != null && control is ibuttoncontrol)

ibuttoncontrol btn = control as ibuttoncontrol;

text = btn.text.replace("\r\n", "").trim();

break;

if (control != null && control is itextcontrol)

literalcontrol lc = control as literalcontrol;

if (lc != null)

continue;

itextcontrol l = control as itextcontrol;

text = l.text.replace("\r\n", "").trim();

break;

return text;

/// 從gridview的資料生成datatable

///

/// gridview物件

public static datatable gridview2datatable(gridview **)

datatable table = new datatable();

int rowindex = 0;

listcols = new list();

if (!**.showheader && **.columns.count == 0)

return table;

gridviewrow headerrow = **.headerrow;

int columncount = headerrow.cells.count;

for (int i = 0; i < columncount; i++)

string text = getcelltext(headerrow.cells[i]);

cols.add(text);

foreach (gridviewrow r in **.rows)

if (r.rowtype == datacontrolrowtype.datarow)

datarow row = table.newrow();

int j = 0;

for (int i = 0; i < columncount; i++)

string text = getcelltext(r.cells[i]);

if (!string.isnullorempty(text))

if (rowindex == 0)

string columnname = cols[i];

if (string.isnullorempty(columnname))

continue;

if (table.columns.contains(columnname))

continue;

datacolumn dc = table.columns.add();

dc.columnname = columnname;

dc.datatype = typeof(string);

row[j] = text;

j++;

rowindex++;

table.rows.add(row);

return table;

gridview 繫結資料來源

本人剛剛學習asp.net c 整理一下關於 gridview的使用 if page.ispostback this.panel1.visible true this.gridview1.emptydatatext 暫沒有資料 this.gridview1.emptydatarowstyle.hor...

GridView手動繫結資料來源

在正規的開發中,不允許使用sqldatasource objectdatasource accessdatasource等資料來源控制項快速的開發web應用,因為這樣會增加伺服器的壓力,不滿足開發的基本要求。所以需要手動繫結資料來源,下面做了演示。如何給gridview控制項手動繫結資料來源。為了方...

gridview資料來源匯出到EXCEL的方法

protectedvoidpage load objectsender,eventargse privatevoidbinddata publicoverridevoidverifyrenderinginserverform controlcontrol protectedvoidbutton1 c...