2011-05-25 10 views
0

私は、チェックボックスであるいくつかのコントロールを持つリピータを持っています。私はリピータ内のすべての項目をコピーしたいと思います。チェックボックス以外の場所では、チェックボックスの値をコピーします。その目的は、リピーターからのすべての情報を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); 
     } 
    } 
} 

をしかし、それは私に、このエラーを与える:

Collection was modified; enumeration operation may not execute.

+0

されている場合は、表示したくありませんか? –

+0

私はそれをリピータの一部にしたくありません。なぜなら、エクセルにエクスポートする必要があり、チェックボックスを受け入れないからです。 – Lilz

+0

あなたの質問を修正し、実際に必要なものを説明するだけです。 –

答えて

0

あなたはチェックボックスがあり、あなたのリピーターをエクスポートすることを、コメントに書いています。 Excelにチェックボックスをエクスポートすることは許可されていないため、エクスポートする前にチェックボックスを削除する必要があります。ここで

は自分のページでこれを追加してみてください...あなたがこれを行うことができます一つの方法です....

public override void VerifyRenderingInServerForm(Control control) 
{ 
} 

また、あなたがあなたの代わりにDataTablerepeaterをエクスポートする場合は?

あなたの項目はチェックボックスが含まれている場合は、上記の作業とあなたが反復して、ここではその後、エクスポートしたいされていないことは、コード...

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(); 
} 
関連する問題