我在代码后面有一个带有C#的aspx页面。
在此页面中,有3个网格视图和一个按钮 - 导出为excel。
点击按钮,3个网格视图的内容将导出到3个Excel工作表。
gridview的数据绑定在类文件中完成,并返回gridview。
string sql1="something1";
classFile.gvBind(gv1,sql1);
string sql2="something2";
classFile.gvBind(gv2,sql2);
string sql3="something3";
classFile.gvBind(gv3,sql3);
它运作良好。现在点击按钮,我循环遍历gridviews的列和行并导出它们。但是,所有网格视图的行数始终为零。但是列标题正在运行。
以下是点击按钮的代码:
XLWorkbook wb = new XLWorkbook();
GridView[] gvExcel = new GridView[] { gv1, gv2, gv3};
string[] name = new string[] { "sheetName1", "sheetName2", "sheetName3"};
for (int i = 0; i < gvExcel.Length; i++)
{
if (gvExcel[i].Visible)
{
gvExcel[i].AllowPaging = false;
gvExcel[i].DataBind();
DataTable dt = new DataTable(name[i].ToString());
for (int z = 0; z < gvExcel[i].Columns.Count; z++)
{
dt.Columns.Add(gvExcel[i].Columns[z].HeaderText);
}
int x = gvExcel[i].Rows.Count;
foreach (GridViewRow row in gvExcel[i].Rows)
{
dt.Rows.Add();
for (int c = 0; c < gvRow.Cells.Count; c++)
{
dt.Rows[dt.Rows.Count - 1][c] = gvRow.Cells[c].Text;
}
}
wb.Worksheets.Add(dt);
gvExcel[i].AllowPaging = true;
}
int x始终为= 0。我哪里做错了?有帮助吗? 谢谢。!!
答案 0 :(得分:0)
永远不会输入您的foreach循环体,因为gvExcel[i].Rows
是一个空列表
所以永远不会添加该行
答案 1 :(得分:0)
好的,我发现了问题。我评论了这一行
gvExcel [I] .DataBind();
现在行计数正常。 我想因为数据集和数据绑定没有在这个页面中执行,而是从不同的.cs文件中执行,所以当我再次将数据绑定到gridview时,它的基本空数据集得到bind和rowcnt也是= 0.