如何使用C#ASP.NET论坛创建对象集合并在每个循环迭代中添加到集合中

时间:2017-05-15 14:05:27

标签: c# asp.net gridview

如何使用C#ASP.NET论坛创建对象集合并在每次循环迭代中添加到集合中。实际上是基于para`ID'在xl中获取用户信息。但是当我要下载导出到xl时,只有第一行记录显示在xl中。但是其他被选中的并没有进入xl,我在foreach循环中感到困惑。我想下载基于ID条件匹配并在gridview中选择的所有数据。我的收藏概念非常薄弱。我想基于ID导出到gridview所选行的xl。已经工作但只有第一个记录才进入数据表。

下面是我导出到xl按钮的代码:

   DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        foreach (GridViewRow row1 in gv_TotalAllReg.Rows)
        {
            if (row1.RowType == DataControlRowType.DataRow)
            {
                bool isChecked = ((CheckBox)row1.FindControl("chk_box")).Checked;
                if (isChecked == true)
                {

                   int index = row1.RowIndex;

                    bo.Para1 = "4";
                    bo.Para2 = "Innovation";

                    bo.Para3 = gv_TotalAllReg.DataKeys[index].Values[0].ToString();//Id
                    dt = bl.Admin_GetInnovationbaseonParaType(bo);


                    DataRow row = dt.NewRow();
                    dt.Rows.Add(row);
                    ds.Tables.Add(dt);

                }

            }


        }


        if (gv_TotalAllReg.Rows.Count > 0)
        {

            ExcelHelper.ToExcel(ds, "ApplicationDetails.xls", Page.Response);
            btnExport.Visible = true;

        }

1 个答案:

答案 0 :(得分:1)

听起来像您导出的Excel导出功能只导出DataSet中的第一个DataTable。

也许尝试这样的事情:

DataTable dt = null;
DataSet ds = new DataSet();
foreach (GridViewRow row1 in gv_TotalAllReg.Rows)
{
    if (row1.RowType == DataControlRowType.DataRow)
    {
        bool isChecked = ((CheckBox)row1.FindControl("chk_box")).Checked;
        if (isChecked == true)
        {
            int index = row1.RowIndex;
            bo.Para1 = "4";
            bo.Para2 = "Innovation";
            bo.Para3 = gv_TotalAllReg.DataKeys[index].Values[0].ToString();//Id
            var tempdt = bl.Admin_GetInnovationbaseonParaType(bo);
            if (dt == null) 
            {
                dt = tempdt.Clone();
            }

            foreach(DataRow temprow in tempdt.Rows) 
            {
                dt.Rows.Add(temprow.ItemArray);
            }
        }
    }    
}

if (dt == null) 
{
    dt = new DataTable();
}
ds.Tables.Add(dt);

if (gv_TotalAllReg.Rows.Count > 0)
{
    ExcelHelper.ToExcel(ds, "ApplicationDetails.xls", Page.Response);
    btnExport.Visible = true;
}