應用場景描述:
主要應用於將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...