我有一个转发器,它有一些控件是复选框。我想复制转发器中除复选框之外的所有项目,在这里我将复制teh复选框的值。目的是我想将转发器中的所有信息以xls格式导出到excel文档。但是,这不允许我有复选框,因此我想删除它们。
我该怎么做?
我试过了:
for (int j =0; j<repeater1.Items.Count; j++)
{
RepeaterItem repItem = repeater1.Items[j];
foreach (Control c in repItem.Controls)
{
if (!(c is CheckBox))
{
Control c2 = c;
repeater2.Items[j].Controls.Add(c2);
}
}
}
但它给了我这个错误:
收藏被修改;枚举操作可能无法执行。
答案 0 :(得分:0)
您在评论中写道,您要导出具有复选框的转发器。不允许将复选框导出到Excel,这就是您要在导出前删除复选框的原因。
以下是一种可以执行此操作的方法...只需在页面中添加此内容即可尝试....
public override void VerifyRenderingInServerForm(Control control)
{
}
或者,如果您导出DataTable
而不是repeater
?
如果以上不起作用,你想迭代然后导出,那么这里是代码......
protected void btnExport_Click(object sender, EventArgs e)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
string attachment = "attachment; filename=FileName" + DateTime.Now.ToString() + ".xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
foreach (RepeaterItem item in Repeater1.Items)
{
CheckBox chk= item.FindControl("CheckBox") as CheckBox;
chk.Visible = false;
}
Repeater1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}