如何在DataSet中添加DataTable值使用ASP.NET C#Webform中的每个foreach循环,实际上我有一个gridview,并且在gridview中选中复选框数据应该只下载到xl。
我有以下代码导出到xl按钮。
foreach (GridViewRow row in gv_TotalAllReg.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
bool isChecked = ((CheckBox)row.FindControl("chk_box")).Checked;
if (isChecked == true)
{
//var ds = new DataSet();
//var dt = new DataTable("RegistrationDetails");
int index = row.RowIndex;
bo.Para1 = "4";
bo.Para2 = "Innovation";
bo.Para3 = gv_TotalAllReg.DataKeys[index].Values[0].ToString();//Id
}
}
}
dt = bl.Admin_GetInnovationbaseonParaType(bo);
if (gv_TotalAllReg.Rows.Count > 0)
{
dt.TableName = "RegistrationDetails";
ds.Tables.Add(dt);
ExcelHelper.ToExcel(ds, "ApplicationDetails.xls", Page.Response);
btnExport.Visible = true;
}
实际上,基于gridview中选中的复选框,数据未在xl工作表中显示,只有最后选择的数据显示在xl工作表中。
我没有得到逻辑ds.Tables.Add(dt);
来在ds每个foreach循环中添加dt
值。我需要将所有选定的数据导入xl表。为什么最后选择的数据只出现在xl表中。
答案 0 :(得分:0)
您可以将整个数据表添加到数据集,而不是将每行数据表添加到数据集。
数据集可以包含数据表的集合,因此您可以将多个数据表添加到数据集中。
DataTable tbl = new Datatable();//or your method that returns datatable.
DataSet ds = new DataSet(); //new dataset object
ds.Tables.Add(tbl); //add datatable object in dataset object.
更新
DataTable dt= new DataTable();
//Columns that should present in datatable
dt.Columns.Add("SN");
dt.Columns.Add("MyField");
int sn = 1;
foreach (GridViewRow row in gv_TotalAllReg.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
bool isChecked = ((CheckBox)row.FindControl("chk_box")).Checked;
if (isChecked == true)
{
DataRow row = dt.NewRow();
//Add necessary columns to row by index.
row[0] = sn;
row[1] = gv_TotalAllReg.DataKeys[index].Values[0].ToString();
dt.Rows.Add(row);
sn++;
}
}
}
if (tbl .Rows.Count > 0)
{
ds.Tables.Add(dt);
ExcelHelper.ToExcel(ds, "ApplicationDetails.xls", Page.Response);
btnExport.Visible = true;
}
答案 1 :(得分:0)
我认为你可以在proxyAddresses
循环之前创建DataTable
,并在其中添加行。以下是添加和检索foreach
的数据的示例:
DataTable
检索数据:
DataTable dt = bl.Admin_GetInnovationbaseonParaType(bo);
if (gv_TotalAllReg.Rows.Count > 0)
{
dt.TableName = "RegistrationDetails";
ds.Tables.Add(dt);
foreach (GridViewRow row in gv_TotalAllReg.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
bool isChecked = ((CheckBox)row.FindControl("chk_box")).Checked;
if (isChecked == true)
{
// inserting data row
dr = dt.NewRow();
dr.SetField("Column_Name", "your_Value");
dt.Rows.Add(dr);
int index = row.RowIndex;
bo.Para1 = "4";
bo.Para2 = "Innovation";
bo.Para3 = gv_TotalAllReg.DataKeys[index].Values[0].ToString();//Id
}
}
}
ExcelHelper.ToExcel(ds, "ApplicationDetails.xls", Page.Response);
btnExport.Visible = true;
}