Duvida para remover elementos de um DataGrid no Flex

boa tarde pessoal, sou iniciante e estou com uma dificuldade para remover elementos de um dataGrid atravez de um botão “Remove” eu nao sei oq passar para o dataProveider, tenho 2 tabNavigators um dentro do outro eo botao fica fora deles, nao sei se é necessario pesquisar os index dos navigators primeiro. Obrigado

[code] fx:Script
<![CDATA[
import br.com.entidades.Aluno;
import br.com.entidades.Curso;
import br.com.entidades.Funcionario;

		import mx.collections.ArrayCollection;
		import mx.controls.dataGridClasses.DataGridColumn;
		import mx.events.FlexEvent;
		import mx.events.ItemClickEvent;
		import mx.utils.StringUtil;
		
		import spark.events.IndexChangeEvent;
		
		var arrayCollectionCursos:ArrayCollection = new ArrayCollection();
		var arrayCollectionAluno:ArrayCollection = new ArrayCollection();
		var arrayCollectionFuncionario:ArrayCollection = new ArrayCollection();
		
		private function limparCamposCursos():void{
			txtNomeCurso.text = txtDuracao.text = txtNumeroVagas.text = "";
			cmbPeriodoCurso.selectedItem = null;
		}
		private function limparCamposAluno():void{
			txtNomeAluno.text = txtEnderecoAluno.text = txtCpfAluno.text = txtEmailAluno.text =txtDatNascAluno.text =
				txtNumeroAluno.text = txtRgAluno.text = txtTelefoneAluno.text = "";
				
		}
		private function limparCamposFuncionario():void{
			txtFuncCargo.text = txtFuncCPF.text = txtFuncDataNasc.text = txtFuncEndereco.text = txtFuncNome.text = txtFuncRG.text =
			txtFuncSalario.text = "";
			
		}
		private function dropdownList(item:Aluno):String{
			return StringUtil.substitute("{0}",item.nome);
		}
		
		[Bindable]public var periodo:ArrayCollection = new ArrayCollection([
			{label:"Diurno", data:1}, 
			{label:"Noturno", data:2}, 
			{label:"Diurno / Noturno", data:3} ]);
		
		[Bindable]public var consulta1:ArrayCollection = new ArrayCollection([
			{label:"Curso", data:1}, 
			{label:"Aluno", data:2}, 
			{label:"Professor", data:3},
			{label:"Funcionário", data:4},
			{label:"Notas", data:5}]);
		
		
		private function closeHandler(event:IndexChangeEvent):void {
			
			if(list2.selectedItem.label == "Curso"){
				
					var colunas:Array = new Array();
					
					var col1:DataGridColumn = new DataGridColumn();
					col1.dataField = "nome";
					col1.headerText = "Nome do Curso";
					
					var col2:DataGridColumn = new DataGridColumn();
					col2.dataField = "numeroVagas";
					col2.headerText = "Numero Vagas";
					
					var col3:DataGridColumn = new DataGridColumn();
					col3.dataField = "periodo";
					col3.headerText = "Periodo";
					
					
					var col4:DataGridColumn = new DataGridColumn();
					col4.dataField = "duracao";
					col4.headerText = "Duração";
					
					colunas.push(col1);
					colunas.push(col2);
					colunas.push(col3);
					colunas.push(col4);
					
					dgConsultas.columns = colunas;
					dgConsultas.dataProvider = arrayCollectionCursos;
					dgConsultas.visible = true;
			}
			else
				if(list2.selectedItem.label == "Aluno"){
					var Colunas:Array = new Array();
					
					
					var col1:DataGridColumn = new DataGridColumn();
					col1.dataField ="nome";
					col1.headerText = "Nome";
					
					var col2:DataGridColumn = new DataGridColumn();
					col2.dataField = "endereco";
					col2.headerText = "Endereço";
					
					var col3:DataGridColumn = new DataGridColumn();
					col3.dataField = "numero";
					col3.headerText = "Número";
					
					var col4:DataGridColumn = new DataGridColumn();
					col4.dataField = "cpf";
					col4.headerText = "CPF";
					
					var col5:DataGridColumn = new DataGridColumn();
					col5.dataField = "rg";
					col5.headerText = "RG";
					
					var col6:DataGridColumn = new DataGridColumn();
					col6.dataField = "dataNasc";
					col6.headerText = "Data de Nascimento";
					
					var col7:DataGridColumn = new DataGridColumn();
					col7.dataField = "telefone";
					col7.headerText = "Telefone";
					
					var col8:DataGridColumn = new DataGridColumn();
					col8.dataField = "sexo";
					col8.headerText = "Sexo";
					
					Colunas.push(col1);
					Colunas.push(col2);
					Colunas.push(col3);
					Colunas.push(col4);
					Colunas.push(col5);
					Colunas.push(col6);
					Colunas.push(col7);
					Colunas.push(col8);
					
					dgConsultas.columns = Colunas;
					dgConsultas.dataProvider = arrayCollectionAluno;
					dgConsultas.visible = true;
				}
				else
					if(list2.selectedItem.label == "Funcionário"){
						var Colunas2:Array = new Array();
						
						var col1:DataGridColumn = new DataGridColumn();
						col1.dataField ="nome";
						col1.headerText = "Nome";
						
						var col2:DataGridColumn = new DataGridColumn();
						col2.dataField = "endereco";
						col2.headerText = "Endereço";
						
						var col3:DataGridColumn = new DataGridColumn();
						col3.dataField = "cargo";
						col3.headerText = "Cargo";
						
						var col4:DataGridColumn = new DataGridColumn();
						col4.dataField = "cpf";
						col4.headerText = "CPF";
						
						var col5:DataGridColumn = new DataGridColumn();
						col5.dataField = "rg";
						col5.headerText = "RG";
						
						var col6:DataGridColumn = new DataGridColumn();
						col6.dataField = "dataNascimento";
						col6.headerText = "Data de Nascimento";
						
						var col7:DataGridColumn = new DataGridColumn();
						col7.dataField = "salario";
						col7.headerText = "Salário";
						
						var col8:DataGridColumn = new DataGridColumn();
						col8.dataField = "sexo";
						col8.headerText = "Sexo";
						
						Colunas2.push(col1);
						Colunas2.push(col2);
						Colunas2.push(col3);
						Colunas2.push(col4);
						Colunas2.push(col5);
						Colunas2.push(col6);
						Colunas2.push(col7);
						Colunas2.push(col8);
						
						dgConsultas.columns = Colunas2;
						dgConsultas.dataProvider = arrayCollectionFuncionario;
						dgConsultas.visible = true;
		}
		

		}
		
		protected function btnInserir_clickHandler(event:MouseEvent):void
		{
			if(tabPrincipal.selectedIndex == 1){
				
				if(tabCadastro.selectedIndex == 0){
					
					var curso:Curso = new Curso();
					curso.nome = txtNomeCurso.text;
					curso.numeroVagas = Number(txtNumeroVagas.text);
					curso.duracao = Number(txtDuracao.text);
					curso.periodo = cmbPeriodoCurso.selectedItem.label;
					
					arrayCollectionCursos.addItem(curso);
					
					limparCamposCursos();
				}
				else 
				if(tabCadastro.selectedIndex == 1){
					
					var aluno:Aluno = new Aluno();
					aluno.nome = txtNomeAluno.text;
				    aluno.endereco = txtEnderecoAluno.text;
					aluno.cpf = Number(txtCpfAluno.text);
					aluno.email = txtEmailAluno.text;
					aluno.dataNasc = Number(txtDatNascAluno.text);
					aluno.numero = Number(txtNumeroAluno.text);
					aluno.rg = Number(txtRgAluno.text);
					
					if(radiogroup1.selectedValue == "fem"){
						aluno.sexo = "Feminino";
					}
					else
						aluno.sexo = "Masculino";
					
					aluno.telefone = Number(txtTelefoneAluno.text);
				
					arrayCollectionAluno.addItem(aluno);
					limparCamposAluno();
				}else
					if(tabCadastro.selectedIndex == 2){
						var func:Funcionario = new Funcionario();
						func.nome = txtFuncNome.text;
						func.endereco = txtFuncEndereco.text;
						func.cargo = txtFuncCargo.text;
						func.cpf = Number(txtFuncCPF.text);
						func.rg = Number(txtFuncRG.text);
						func.dataNascimento = Number(txtFuncDataNasc.text);
						func.salario = Number(txtFuncSalario.text);
						
						if(radiogroup2.selectedValue == "fem1"){
							func.sexo1 = "Feminino";
						}
						else
							func.sexo1 = "Masculino";
						
						arrayCollectionFuncionario.addItem(func);
						limparCamposFuncionario();
				
					}		
			}
		}	


		[Bindable] private var rItem:ArrayCollection = new ArrayCollection();
		{
			public function deleteItem(event:MouseEvent):void{      
	        rItem.removeItemAt(dgConsultas.selectedIndex);
			rItem.refresh();
		}
		}

		protected function btnRemover_clickHandler(event:MouseEvent):void
		{

		}

	]]>
	
</fx:Script>[/code]

é melhor setar um dataprovider para sua tabela ai quando precisar de deletar um item deleta direto da sua ArrayCollection que está setado com sua tabela ai para deletar faça assim:

//para deletar faça suaArrayCollection.removeItem(suaTabela.selectedItem);

quanto a pesquisar o indice dos TabNavigators, eu faria isso também!

flw!

eu n entendi muito bem, mais eu fiz dgConsulta.dataProveider={arrayCollectionCurso} e na função remove do botao [code] if(tabPrincipal.selectedIndex == 2){

				if(tabCadastro.selectedIndex == 0){	
				arrayCollectionCursos.removeItemAt(dgConsultas.selectedItem());
		}
			}[/code] 

ai compila mais quando clico no botao da um erro de ActionScript… =/

qual erro?

Erro de ActionScript [Descartar Tudo] [Continuar]

TypeError: Error #1006: value não é uma função.
at br.com.projetotcc::Consultas/btnRemover_clickHandler()[C:\workspace\ProjetoCadastro\src\br\com\projetotcc\Consultas.mxml:296]
at br.com.projetotcc::Consultas/__btnRemover_click()[C:\workspace\ProjetoCadastro\src\br\com\projetotcc\Consultas.mxml:453]

obrigado pela ajuda até aki rs

Foi mal é porque o método da sua ArrayCollection “removeItemAt” recebe como parametro um tipo inteiro para indicar seu indice e no caso esse está passando um tipo Object então ficaria assim:

fiz um exemplo simples em Flex 3 demostrando o funcionamento:

[code]<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” layout=“absolute”>
mx:Script
<![CDATA[
import mx.collections.ArrayCollection;

		//bindable é necessário para atualizar o que estiver vinculado a essa variavel automaticamente
		[Bindable]
		private var lista:ArrayCollection = new ArrayCollection([{nome:"Ivan", estado:"GO"}, {nome:"Teste", estado:"MG"}, {nome:"Teste3", estado:"SP"}]);
		
		private function removerItem():void{
			lista.removeItemAt(tabela.selectedIndex);
		}
		
	]]>
</mx:Script>
<mx:DataGrid x="10" y="10" dataProvider="{lista}" id="tabela">
	<mx:columns>
		<mx:DataGridColumn headerText="Nome" dataField="nome"/>
		<mx:DataGridColumn headerText="Estado" dataField="estado"/>
	</mx:columns>
</mx:DataGrid>
<mx:Button x="10" y="174" label="Remover" click="removerItem()"/>

</mx:Application>[/code]

Observe que a variavel do tipo ArrayCollection deve ser “Bindable”.

Se você estiver usando Flex 3 indico essa apostila aqui que é pequena mais ensina muito
http://www.oficinadanet.com.br/apostilas/detalhe/663/apostila_adobe_flex_a_partir_do_zero
flw!

Titata,

Explique o que você quer fazer e o contexto da sua aplicação que te ajudo a organizar isso, você está se perdendo em vários pontos.

[]'s

eu tentei testar cada dataProvider e remover mais o unico q funciona eo arrayCollectionCurso, soh na tela de curso q remove os items

[code] if(tabPrincipal.selectedIndex == 2){

				if(tabCadastro.selectedIndex == 0){
	//				if(dgConsultas.dataProvider == arrayCollectionAluno){
	//					arrayCollectionAluno.removeItemAt(arrayCollectionAluno.getItemIndex(dgConsultas.selectedItem));
	//				}else
		//				if(dgConsultas.dataProvider == arrayCollectionCursos){
							arrayCollectionCursos.removeItemAt(arrayCollectionCursos.getItemIndex(dgConsultas.selectedItem));
							
							//			}else
							//				if(dgConsultas.dataProvider == arrayCollectionFuncionario){
							//					arrayCollectionFuncionario.removeItemAt(arrayCollectionFuncionario.getItemIndex(dgConsultas.selectedItem));
							//				}else
							//						arrayCollectionProfessor.removeItemAt(arrayCollectionProfessor.getItemIndex(dgConsultas.selectedItem));
							//					
							
						}	
						
					
				}
				
			}[/code]

Se você tem outros ArrayCollection com atributos diferentes o melhor seria é criar uma datagrid para cada um, já que a datagrid só pode receber uma ArrayCollection por vez!
Por exemplo se você fez assim:

[code]//datagrid recebe ArrayCollection1
suaDataGrid.dataProvider = suaArrayCollection1;

//mesma datagrid recebe ArrayCollection2
suaDataGrid.dataProvider = suaArrayCollection2;[/code]

Nesse caso apenas a última dataProvider está vinculada a sua dataGrid que contém a “suaArrayCollection2”, flw!

vlw ivan e cebim esqueci de posta aki q tinha conseguido vlw pela ajuda fiz da seguinte maneira

[code]if(tabPrincipal.selectedIndex == 2){

				if(dgConsultas.selectedItem as Curso){
					arrayCollectionCursos.removeItemAt(arrayCollectionCursos.getItemIndex(dgConsultas.selectedItem));
				}else if(dgConsultas.selectedItem as Professor){
					arrayCollectionProfessor.removeItemAt(arrayCollectionProfessor.getItemIndex(dgConsultas.selectedItem));
				}else if(dgConsultas.selectedItem as Aluno){
					arrayCollectionAluno.removeItemAt(arrayCollectionAluno.getItemIndex(dgConsultas.selectedItem));
				}else if(dgConsultas.selectedItem as Funcionario){
					arrayCollectionFuncionario.removeItemAt(arrayCollectionFuncionario.getItemIndex(dgConsultas.selectedItem));
				}
			
			}[/code]

Depois que você remover o item da coleção (dataProvider) da um:

minhaDataGrid.validadeNow();