Inquiridor
Preencher um datatable dinamicamente

Pergunta
-
Pessoal estou precisando de uma ajuda para preencher um datatable de forma dinâmica, por exemplo eu preencho as colunas da seguinte forma:
//Adiciona as colunas gerando o cabçalho da gridview for (int i = 0; i < listacampos.Count; i++) { dTable.Columns.Add(listacampos[i].DsCampo.ToString()); }
Depois de preencher as a linha conforme cada coluna por exemplo:
for (int i = 0; i < nova.Count; i++) { dTable.Rows.Add(nova[i].DsConteudoCampo.ToString()); } dTable.Rows.Add(dLinha);
Cabeçalho eu tenho nome e e-mail por exemplo, porém desta forma que esta implementada ao montar a linha esta colocando o resultado nome e e-mail na mesma coluna.
Eu preciso que preencha toda linha, exemplo nome na coluna nome e e-mail na coluna e-mail.
Desde já agradeço a ajuda
Todas as Respostas
-
Josue,
Você deve informar ao seu DataRow todas as colunas que sua tabela possue, fiz um exemplo para você observar.
DataTable dTable1 = new DataTable(); // adiciona a coluna for (int i = 0; i < 2; i++) { dTable1.Columns.Add("Campo" + Convert.ToString(i + 1)); } // percorre as colunas adicionadas for (int i = 0; i < dTable1.Columns.Count; i++) { for (int j = 0; j < 5; j++ ) { dTable1.Rows.Add("valorA","valorB"); } } GridView1.DataSource = dTable1; GridView1.DataBind();
Observe essa linha, ela que você precisará alterar
dTable1.Rows.Add("valorA","valorB");
Se a resposta ajudou a resolver seu problema por favor não esqueça de marcá-la como resposta válida
Abraços,
Leandro Rodrigues
Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
- Sugerido como Resposta Paulo César Viana sexta-feira, 9 de março de 2012 18:43
-
Leandro
Desde já agradeço pela sua ajuda, porém há um problema, assim como as colunas, as linhas são preenchidas de forma dinâmica.
Eu tenho uma tabela no banco com os campos que o gerenciador do formulário cadastra e tenho outra tabela onde o usuário cadastra os dados referentes a este campo, pode ser que seja cadastrado por exemplo os campos nome e e-mail, eu um segundo momento pode ser cadastrado os campos A,B,C,D e o usuário vai cadastrar os dados para estes campos.
-
Pessoal após alguns dias quebrando a cabeça consegui resolver o problema da seguinte forma:
/// <summary> /// Monta o datatable /// </summary> /// <returns></returns> public DataTable dtDados() { //Cria uma lista com todos os campos do formulário List<MRelatorioEventos> listacampos = NRelatorioEventos.ListaCamposRelatorio(relatorio); //Cria uma lista com todos os ids dos inscritos no evento List<MRelatorioEventos> listaidsparticipantes = NRelatorioEventos.ListaIdsParticipantes(relatorio); //Cria uma lista com todos os dados dos participantes do evento List<MRelatorioEventos> listaparticipantes = NRelatorioEventos.ListaParticipantes(relatorio); //Cria uma lista que irá receber todos dados dos participantes agrupados por IDs List<MRelatorioEventos> dadosParticipante = new List<MRelatorioEventos>(); //Cria um datatable onde é montada a tabela com os dados vindos do banco de dados DataTable dTable = new DataTable(); //Adiciona as colunas gerando o cabeçalho para a tabela for (int i = 0; i < listacampos.Count; i++) { dTable.Columns.Add(listacampos[i].DsCampo.ToString()); } //Reune os dados de cada participante foreach (var item in listaidsparticipantes) { //Obtém os dados do participante atual. dadosParticipante = listaparticipantes.FindAll(delegate(MRelatorioEventos atual) { return atual.IdParticipante == item.IdParticipante; }); //Adiciona uma nova linha a cada item da lista de participante dTable.Rows.Add(); //Percorre cada linha da tabela para preenche-la com os dados dos participantes for (int i = 0; i < dTable.Rows.Count; i++) { //Percorre a lista com os dados do participante for (int j = 0; j < dadosParticipante.Count; j++) { //Adiciona os dados do participante sempre na última linha do datatable [dTable.Rows.Count-1] //[j]Representa as colunas do datatable dTable.Rows[dTable.Rows.Count - 1][j] = dadosParticipante[j].DsConteudoCampo; } } } return dTable; }
Após montar o dataTable é só adiciona-lo ao datasource da gridview
- Sugerido como Resposta Augusto.Silva quinta-feira, 15 de março de 2012 11:52