DaniloTec 0 Denunciar post Postado Julho 13, 2009 Boa tarde gente. Populei um grid e editei umas colunas: protected void gvPesquisa_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType != DataControlRowType.Header){ if (Convert.ToBoolean(e.Row.Cells[4].Text)){ e.Row.Cells[4].Text = "Ativo"; }else { e.Row.Cells[4].Text = "Inativo"; } } }Mas quando eu clico no botão editar, quero colocar um checkbox na coluna que editei o valor: protected void gvPesquisa_RowEditing(object sender, GridViewEditEventArgs e){ gvPesquisa.EditIndex = e.NewEditIndex; BindData(); CheckBox chkStatus = new CheckBox(); chkStatus.ID = "bitStatus"; if (gvPesquisa.Rows[e.NewEditIndex].Cells[4].Text.ToString() == "0"){ chkStatus.Checked = true; }else{ chkStatus.Checked = false; } gvPesquisa.Rows[e.NewEditIndex].Cells[4].Text = ""; gvPesquisa.Rows[e.NewEditIndex].Cells[4].Controls.Add(chkStatus); }E está resultando no erro: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Já tentei de tudo e não consigo entender o porque disso.Sabem me dizer o que pode estar acontecendo? Vlw! Compartilhar este post Link para o post Compartilhar em outros sites
DaniloTec 0 Denunciar post Postado Julho 14, 2009 Achei o erro. O problema está na linha: if (e.Row.RowType != DataControlRowType.Header){Aqui eu estou dizendo que quero todas as linhas do grid que sejam diferentes do header. O que eu não esperava é que a linha footer tmb é uma linha e tmb é diferente do header. Por isso sempre exibia a mensagem de index fora da range. <_< Resolvi com: if (e.Row.RowType == DataControlRowType.DataRow){Assim ele ignora tudo que não for linha de conteúdo.Vlw!!! Compartilhar este post Link para o post Compartilhar em outros sites