Inquiridor
Asp:Gridview perde colunas criadas dinamicamente no postback

Pergunta
-
Ola galera, boa tarde!
Seguinte, estou desenvolvendo uma aplicação .Net, e nela eu tenho um grid que será usada para comparar valores!
As colunas devem ser adicionadas ao clique de um botão, e poderá ser adicionada quantas colunas o usuário quiser. A primeira coluna eu consigo criar, já a segunda eu não consigo.
Checando a quantidade de colunas, ele sempre mostra duas (As que estão criadas no ASPX) e não considera as colunas criadas pelo C#O Código:
<div style="width: 100%; border-style: dotted"> <asp:Button ID="btnNovaOperadora" runat="server" OnClick="btnNovaOperadora_OnClick" Text = "Adicionar nova Operadora"/> <div ID="divTitulo" runat="server"> Comparativo de Cotação </div> <asp:GridView ID="gvComparativoCotacao" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="ColunaFixa" /> <asp:BoundField DataField="ColunaPlano" /> </Columns> </asp:GridView> </div>
E esse o código no Clique do botão:
protected void AdicionaColuna() { //BoundField bc = new BoundField(); //gvComparativoCotacao.Columns.Add(bc); int Coluna = 2;// Convert.ToInt16(hIdQtdColunas.Value); DropDownList ddlOperadora = new DropDownList(); TextBox txtDesc = new TextBox(); for (int cells = 0; cells < gvComparativoCotacao.Rows.Count; cells++) { TableCell tc = new TableCell(); gvComparativoCotacao.Rows[cells].Cells.Add(tc); } gvComparativoCotacao.Rows[0].Cells[Coluna].Controls.Add(ddlOperadora); gvComparativoCotacao.Rows[1].Cells[Coluna].Controls.Add(txtDesc); int IDs = 0; for (int i = 5; i < gvComparativoCotacao.Rows.Count; i++) { if (gvComparativoCotacao.Rows[i].Cells[0].Text == "Plano") { DropDownList ddlPlano = new DropDownList(); ddlPlano.ID = IDs.ToString(); gvComparativoCotacao.Rows[i].Cells[Coluna].Controls.Add(ddlPlano); } if (gvComparativoCotacao.Rows[i].Cells[0].Text == "Acomodação") { TextBox txtAcomodacao = new TextBox(); txtAcomodacao.ID = IDs.ToString(); gvComparativoCotacao.Rows[i].Cells[Coluna].Controls.Add(txtAcomodacao); } if (gvComparativoCotacao.Rows[i].Cells[0].Text == "Reembolso") { TextBox txtReembolso = new TextBox(); txtReembolso.ID = IDs.ToString(); gvComparativoCotacao.Rows[i].Cells[Coluna].Controls.Add(txtReembolso); } if (gvComparativoCotacao.Rows[i].Cells[0].Text == "Abrangência") { TextBox txtAbrangencia = new TextBox(); txtAbrangencia.ID = IDs.ToString(); gvComparativoCotacao.Rows[i].Cells[Coluna].Controls.Add(txtAbrangencia); } IDs++; } } protected void btnNovaOperadora_OnClick(object sender, EventArgs e) { AdicionaColuna(); }
Aonde estou errando!?
Fico no Aguardo!
Todas as Respostas
-
for (int cells = 0; cells < gvComparativoCotacao.Rows.Count; cells++)
{
TableCell tc = new TableCell();
gvComparativoCotacao.Rows[cells].Cells.Add(tc);
}
acredito que o seu erro está no add(tc). tente colocar new tablecell() no lugar e veja o que acontece
-