Ho risolto lavorando direttamente sull'ItemDataBound.
Come nel codice precedente il mio DataSource è una DataTable.
codice:protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { switch(e.Item.ItemType) { case ListItemType.Header: e.Item.Controls.Add(new LiteralControl("<table>")); e.Item.Controls.Add(new LiteralControl("\r\n\t<tr>")); for (int i = 0; i < ((DataTable)Repeater1.DataSource).Columns.Count; i++) { e.Item.Controls.Add(new LiteralControl("\r\n\t\t<td>")); Label l = new Label(); l.ID = "Test " + i.ToString(); l.Text = ((DataTable)Repeater1.DataSource).Columns[i].ToString(); e.Item.Controls.Add(l); e.Item.Controls.Add(new LiteralControl("</td>")); } e.Item.Controls.Add(new LiteralControl("\r\n\t</tr>")); break; case ListItemType.Item: for (int j = 0; j < ((DataTable)Repeater1.DataSource).Rows.Count; j++) { e.Item.Controls.Add(new LiteralControl("\r\n\t<tr>")); for (int i = 0; i < ((DataTable)Repeater1.DataSource).Columns.Count; i++) { e.Item.Controls.Add(new LiteralControl("\r\n\t\t<td>")); Label l = new Label(); l.ID = "Test item" + i.ToString(); l.Text = ((DataTable)Repeater1.DataSource).Rows[j][i].ToString(); e.Item.Controls.Add(l); e.Item.Controls.Add(new LiteralControl("</td>")); } e.Item.Controls.Add(new LiteralControl("\r\n\t</tr>")); } break; case ListItemType.Footer: e.Item.Controls.Add(new LiteralControl("</table>")); break; } }

Rispondi quotando