Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DaniloTec

[Resolvido] Index was out of range. no GridView

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.