Ir para conteúdo

POWERED BY:

Arquivado

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

Fábio Procópio

Datagrid no ASP.NET

Recommended Posts

Olá pessoal! Bom dia a todos! Sou calouro em ASP.NET e tô usando C#.

 

Tenho um form popup onde há um DropDownList; nele, seleciono um setor; após a seleção o evento SelectedIndexChanged é invocado onde é passado como parâmetro o código do setor; ao receber este código, uma rotina é executada para popular um datagrid com o nome dos funcionários locados naquele setor. Abaixo, um exemplo de como ficaria o datagrid quando seleciono, por exemplo, o setor Informática:

 

Nome

-----------------

Mané Oliveira

Menina Gatinha

Zé Pitombeira

Zé da Silva

 

No evento ItemCreated, programei para que quando o usuário passar o mouse sobre as linhas ele mude a cor e o ícone para uma "mão" indicando que é um link, conforme códifo abaixo:

 

if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)

{

e.Item.Attributes.Add("onMouseOver", "this.style.backgroundColor='#ffcc99'; this.style.cursor='pointer';");

e.Item.Attributes.Add("onMouseOut", "this.style.backgroundColor='White';");

}

 

 

Até aí, funciona sem problemas. Mas, eu quero clicar em Menina Gatinha, por exemplo, e setar um Label como o nome selecionado:

 

lblUsuario.Text = e.Item.Cells[0].Text

 

Fiz isso no evento ItemCreated, mas é colocado o valor ''(branco) no Label; tentei colocar o mesmo comando no evento ItemDataBound e funcionou. NO ENTANTO, ele pegou o valor errado:

 

-> se eu clicar em Menina Gatinha ele pega Mané Oliveira;

-> se eu clicar em Zé Pitombeira ele pega Menina Gatinha;

-> se eu clicar em Zé da Silva ele pega Zé Pitombeira;

-> e, por fim, se eu clicar em Mané Oliveira ele pega Zé da Silva.

 

Perceberam que ele sempre tá pegando a linha anterior? No caso de quando clico na primeira linha ele pega a última. Alguém sabe o que danado é isso???

 

Desde já, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fábio Procópio o comando:
lblUsuario.Text = e.Item.Cells[0].Text
até que esta certo, mas você esta usando no evento errado, o evento correto seria o SelectedIndexChanged, da uma olhada nessa matéria que explica bem os diversos recursos da DataGrid: http://www.linhadecodigo.com.br/Artigo.aspx?id=854&pag=1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fábio Procópio o comando:

lblUsuario.Text = e.Item.Cells[0].Text
até que esta certo, mas você esta usando no evento errado, o evento correto seria o SelectedIndexChanged, da uma olhada nessa matéria que explica bem os diversos recursos da DataGrid: http://www.linhadecodigo.com.br/Artigo.aspx?id=854&pag=1

Oi, camarada!

 

Coloquei o comando no evento que você falou, mas ele gerou este erro:

 

Compiler Error Message: CS1061: 'System.EventArgs' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)

 

Source Error:

 

Line 45: {

Line 46:

Line 47: lblSetor.Text = e.Item.Cells[0].Text;

Line 48:

Line 49:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você utilizou como o exemplo da página 4 do artigo:

 

private void DataGrid_SelectIndexChanged(object sender, EventArgs e){
	DataGridItem item = this._dg.SelectedItem;
	this.Label1.Text = "Item selecionado: " + item.Cells[0].Text;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você utilizou como o exemplo da página 4 do artigo:

 

private void DataGrid_SelectIndexChanged(object sender, EventArgs e){
	DataGridItem item = this._dg.SelectedItem;
	this.Label1.Text = "Item selecionado: " + item.Cells[0].Text;
}

Beleza, cara!

 

Depois de ter te postado a última mensagem, encontrei a solução.

Valeu muito obrigado!!!

 

No entanto, aproveitando a oportunidade, deixa eu fazer outra pergunta: eu tenho uma coluna no grid do tipo BUTTON SELECT. Tem como, por exemplo, eu dar um click em uma coluna (que não é BUTTON SELECT) e invocar o evento SelectIndexChanged? Se sim, você sabe como?

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho 4 colunas: SelectLogin (tipo BUTTON SELECT), Setor, Nome e Login(que está oculto). Na verdade, o que quero fazer é o seguinte: quando clicar na coluna SelectLogin, antes da linha ficar selecionada (ou seja, da cor cinza) o evento execute o comando:

 

item.Attribute.Add("onClick", "java script: minhaFuncao('parametro')".

 

Por que? Porque se a linha ficar selecionada, para o programa invocar a chamada do javascript, o usuário terá que clicar de novo na coluna SelectLogin. Ou seja, o usuário clicou duas vezes na coluna para executar:

 

item.Attribute.Add("onClick", "java script: minhaFuncao('" + this.Label1.Text + "')";

 

Entendeu?

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.