gridview行计数返回0

时间:2017-11-10 11:11:40

标签: c# gridview

我在代码后面有一个带有C#的aspx页面。

在此页面中,有3个网格视图和一个按钮 - 导出为ex​​cel。

点击按钮,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。我哪里做错了?有帮助吗? 谢谢。!!

2 个答案:

答案 0 :(得分:0)

永远不会输入您的foreach循环体,因为gvExcel[i].Rows是一个空列表

所以永远不会添加该行

答案 1 :(得分:0)

好的,我发现了问题。我评论了这一行

  

gvExcel [I] .DataBind();

现在行计数正常。 我想因为数据集和数据绑定没有在这个页面中执行,而是从不同的.cs文件中执行,所以当我再次将数据绑定到gridview时,它的基本空数据集得到bind和rowcnt也是= 0.