Flex Java - Insert por uma Data Grid

17 respostas
R

Boa Tarde pessoal.
Alguém sabe me dizer se consigo fazer um insert por uma datagrid?
Por Exemplo:
Qdo clico no botão inserir quero poder escrever na grid e depois salvar e mandar pro banco, sei que consigo alterar ele, mas nã estou conseguindo fazer um insert direto.
Obrigada, fico no aguardo.

17 Respostas

J

Então…fiz uma coisa aqui talvez possa te ajudar:
Explicando: no meu datagrid tenho um dataprovider no meu caso é um array de usuários…
quando clico em inserir ele adiciona um novo objeto CadUsuario ao meu array e seleciona a linha que ele esta no grid.
quando clico em salvar ele pega o meu objeto que acabei de inserir e no caso mandaria este objeto para ser salvo…
segue código abaixo da classe modelo do usuário e exemplo da tela…
espero ter ajudado…
vlwww

Classe modelo:

package 
{
	/**
	 * @author JFFiorotto
	 */
	public class CadUsuario {
		public var idUsuario:int;
		public var nome:String;
		public var login:String;
	}	
}

Exemplo tela :

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			
			[Bindable]
			private var dpUsuarios:ArrayCollection;
			
			private function onClickInserir():void {
				var usuario:CadUsuario = new CadUsuario;
				
				if(dpUsuarios == null){
					dpUsuarios             = new ArrayCollection();
				}
				
				usuario.idUsuario      = dataGrid.dataProvider.length + 1;
				dpUsuarios.addItem(usuario);
				
				dataGrid.selectedIndex =  dataGrid.dataProvider.length - 1;
			}
			
			private function onClickSalvar():void {
				Alert.show("Salva o usuario informado no grid: Nome: " + dataGrid.selectedItem.nome + " Login: " + dataGrid.selectedItem.login,"Salvando!!");
			}
			
			
		]]>
	</fx:Script>
		
	<s:DataGrid id="dataGrid" x="10" y="10" width="480" height="138" dataProvider="{dpUsuarios}"
				editable="true">
		<s:columns>
			<s:ArrayList>
				<s:GridColumn dataField="idUsuario" headerText="ID"></s:GridColumn>
				<s:GridColumn dataField="nome"      headerText="Nome"></s:GridColumn>
				<s:GridColumn dataField="login"     headerText="Login"></s:GridColumn>
			</s:ArrayList>
		</s:columns>
	</s:DataGrid>
	<s:Button x="10" y="156" label="Inserir" click="onClickInserir()"/>
	<s:Button x="92" y="156" label="Salvar" click="onClickSalvar()"/>
</s:Application>
R

Oi, obrigada pela ajuda, mas não estou conseguindo fazer é o seguinte.
tenho uma tela inicial que tem os botões inserir, editar, apagar…
Qdo pesquiso algo e clico em editar consigo escrever na grid, mas qdo clico em incluir não consigo escrever, saberia me dizer o que pode ser?

J

se tiver como, coloca seu código ai pra dar uma olhada…vlwww

R

Não sei como funciona para colocar códigos aqui, sou iniciante por aqui, vou colar aqui, qualquer coisa me de um toque de como funciona.
Seguinte, qdo clico em outra tela em inserir ou editar, abre uma nova que contem a grid abaixo, se entreo em editar consigo escrever na grid, ver o combobox, mas se entro no modo de inserir não consigo.

<mx:DataGrid x=“0” y=“0” height=“100%” width=“100%” editable=“true"
dataProvider=”{dadosParente}" id=“dg_parentesco”>
mx:columns
<mx:DataGridColumn headerText=“Nome” dataField=“nm_parente”/>
<mx:DataGridColumn editable=“true” editorDataField="value"
headerText=“Relacionamento” width=“105”>
mx:itemEditor
mx:Component
<mx:ComboBox editable=“true”>

</mx:ComboBox>
						</mx:Component>
					</mx:itemEditor>

				</mx:DataGridColumn>


				<mx:DataGridColumn editable="true" editorDataField="value" headerText="Coabita"
								   width="57" dataField="sn_coabita">

					<mx:itemEditor>
						<mx:Component>
							<mx:ComboBox editable="true">
								<mx:dataProvider>
									<mx:String>SIM</mx:String>
									<mx:String>NÃO</mx:String>
								</mx:dataProvider>
							</mx:ComboBox>
						</mx:Component>
					</mx:itemEditor>

				</mx:DataGridColumn>
			</mx:columns>
		</mx:DataGrid>
J

me passa o código que chama o inserir e o editar…

R

incluir

public function incluir():void {
var abreCadastro:ABW1011 = new ABW1011();
PopUpManager.addPopUp(abreCadastro, this, true);
FuncoesBasicas.centralizarTela(abreCadastro);
}

editar

public function editar():void {
if (dg_dados.selectedItem != null) {
	var mod:ABW1011 = new ABW1011();
	mod.pesquisa = dg_dados.selectedItem.cd_pessoafisica;
	PopUpManager.addPopUp(mod, this, true);
	FuncoesBasicas.centralizarTela(mod);
} else {
	Alert.show(resourceManager.getString('Hemosis', 'editar_invalido'));
}

====================================================

J
é rsrs ta dificil de entender a unica diferença que notei é que no método editar voce carrega a variável mod.pesquisa = dg_dados.selectedItem.cd_pessoafisica;

e no incluir não

qual o objeto que vc tem aki no dg_dados.selectedItem.cd_pessoafisica??;
R

Tenho uma data grid,
Funciona assim, na tela que chama tenho um campo pesquisa e uma datagrid, qdo pesquiso dou dois cliques no item que qro editar e chamo a outra tela, já qdo qro inseir vou direto no botão incluir e chamo a nova tela limpa.

J

entendi, tem como me passar o codigo do ABW1011, dai consigo fazer uns testes aqui :D…vlww

R

Sim posso lhe passar, mas antes só me diga uma coisa, o que devo habilitar para escrever em uma grid vazia?

J

então voce precisa ter um objeto criado, como eu fiz no exemplo que te passei…depois de criar um novo objeto no dataProvider do grid eu seleciono ele e passo os valores :smiley:

R

É que não qro escrever em um text input e passar pra grid sabe e depois salvar, qro escrever direto na grid, qro qdo entrar na tela clicar numa celula da grid e pode escrever.

J

entao…nesse caso voce pode usar o exemplo que passei…quando clicar em inserir vc cria um novo objeto no seu dataProvider e ja seleciona ele no grid dai o usuario insere as informações e depois vc manda esse objeto selecionado pro banco…
entendeu ?

R

Tá difícil. :frowning:
Fiz um teste agora, coloquei outro grid que não vai puxar nada do banco, daí qdo clico em inserir consigo clicar na grid e colocar o cursor, já na que ta relacionada ao banco nao consigo.

J

se preferir me passa seu codigo para [email removido] que te do uma força com isso… fico no aguardo vlww :smiley:

J

se preferir me passa seu codigo por email, que tendo dar uma força :smiley:

[email removido]

vlwww

R

Obrigada jffiorotto, suas dicas dadas me ajudaram muito, consegui fazer :smiley:

Criado 6 de junho de 2011
Ultima resposta 13 de jul. de 2011
Respostas 17
Participantes 2