Ir para conteúdo

POWERED BY:

Arquivado

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

Patricia 1

DetailsView com DropDownList vinculado a outro DropDownList

Recommended Posts

Boa Tarde pessoal

 

Achei esses dois links que me ajudaram a fazer um DetailsView que exibi o detalhe dos dados exibidos em um gridview.

 

 

Personalizando campos no DetailsView

 

http://www.webswapp.com/codesamples/aspnet...etailsview.aspx

 

 

No segundo link além de poder testar, temos acesso a um código.

 

A parte em asp acredito que entendi, então adequei ao meu programa e fiz o seguinte:

 

1) Inseri o DetailsView e associei o mesmo a 1 SQLDataSource que localiza os dados do usuário.

2) Transformei os campos idvisao e idperfil em "Template Field" .

3) Na edição dos Templates inseri para o "EditItemTemplate" do campo IDVISAO um DropDownList e um

SQLDataSource. Inseri no SQLDataSource o select :

 

"SELECT IDVISAO, CODIGO FROM USUVISAO ORDER BY CODIGO"

 

Defini no DropDownList, na opção "Edit DataBindings", o SelectedValue com o campo "idvisao"

Defini no DropDownList, na opção "Choose a Data Source", o DataTextField="CODIGO"

DataValueField="IDVISAO"

 

4) Para o "EditItemTemplate" do campo "IDPERFIL" inseri o mesmo. No SQLDataSource deste inseri:

"SELECT IDPERFIL, IDVISAO, CODIGO FROM USUPERFIL WHERE (IDVISAO = @IDVISAO) ORDER BY CODIGO"

 

Porém quando fui definir o parametro não aparecia o dropdownlistaVISAO, entao defini o detailview mesmo e depois troquei no código

 

Defini na opção "Choose a Data Source", o DataTextField="CODIGO" e DataValueField="IDPEFIL"

 

*** Os problemas encontrados ***

 

1) Até aqui, se rodar o programa ele aparece os dados do cadastro correto, e no modo de edição aparece o dropdownlistVisao corretamente, porém o dropdownlistPerfil (que mostra os perfis de acordo com a visão escolhida) é preenchido corretamente porém não exibi a opção que ja esta cadastrada, ele troca e exibi o primeiro da lista. Se esta em modo de edição deve manter no item que esta cadastrado e se o usuário quiser trocar esse campo ao clicar na seta, aparece os opções , não é ? Como faço para posicionar exatamente no item que já esta cadastrado ?

 

 

2) Quando tento salvar a alteração realizada aparece o seguinte erro:

 

 

"Cannot insert the value NULL into column 'IDPERFIL', table 'crweb3.dbo.USUARIO'; column does not allow nulls. UPDATE fails.

The statement has been terminated. "

 

Então passei para a parte em c# para resolver esse problema. Coloquei o código (apresentado no segundo link) no programa mas ocorre os seguintes erros:

 

Error 2 'DropDownList' does not contain a definition for 'ClearSelection' and no extension method 'ClearSelection' accepting a first argument of type 'DropDownList' could be found (are you missing a using directive or an assembly reference?)

 

 

Error 3 'System.Collections.IDictionary' does not contain a definition for 'FindByValue' and no extension method 'FindByValue' accepting a first argument of type 'System.Collections.IDictionary' could be found (are you missing a using directive or an assembly reference?)

 

 

Error 4 'System.Collections.IDictionary' does not contain a definition for 'Insert' and no extension method 'Insert' accepting a first argument of type 'System.Collections.IDictionary' could be found (are you missing a using directive or an assembly reference?)

 

 

Eu inclui o "using System.Collections" porém não resolveu.

 

Alguém poderia me ajudar com esses erros e me indicar oque estou fazendo de errado?

 

Obrigada

Patricia

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Até aqui, se rodar o programa ele aparece os dados do cadastro correto, e no modo de edição aparece o dropdownlistVisao corretamente, porém o dropdownlistPerfil (que mostra os perfis de acordo com a visão escolhida) é preenchido corretamente porém não exibi a opção que ja esta cadastrada, ele troca e exibi o primeiro da lista. Se esta em modo de edição deve manter no item que esta cadastrado e se o usuário quiser trocar esse campo ao clicar na seta, aparece os opções , não é ? Como faço para posicionar exatamente no item que já esta cadastrado ?

Para isso basta você setar a propriedade SelectedValue com o campo que você quer que ele receba.

 

2) Quando tento salvar a alteração realizada aparece o seguinte erro:

 

 

"Cannot insert the value NULL into column 'IDPERFIL', table 'crweb3.dbo.USUARIO'; column does not allow nulls. UPDATE fails.

The statement has been terminated. "

Você esta tentando inserir um registro sem preencher o campo IDPERFIL e ele não aceita valor nulo

 

Então passei para a parte em c# para resolver esse problema. Coloquei o código (apresentado no segundo link) no programa mas ocorre os seguintes erros:

 

Error 2 'DropDownList' does not contain a definition for 'ClearSelection' and no extension method 'ClearSelection' accepting a first argument of type 'DropDownList' could be found (are you missing a using directive or an assembly reference?)

 

 

Error 3 'System.Collections.IDictionary' does not contain a definition for 'FindByValue' and no extension method 'FindByValue' accepting a first argument of type 'System.Collections.IDictionary' could be found (are you missing a using directive or an assembly reference?)

 

 

Error 4 'System.Collections.IDictionary' does not contain a definition for 'Insert' and no extension method 'Insert' accepting a first argument of type 'System.Collections.IDictionary' could be found (are you missing a using directive or an assembly reference?)

Não sei como esta seu código mas os erros acima é por que esta usando os métodos de forma incorreta.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia :)

 

Obrigada por me ajudar. Bom vamos por partes então:

 

 

1) Até aqui, se rodar o programa ele aparece os dados do cadastro correto, e no modo de edição aparece o dropdownlistVisao corretamente, porém o dropdownlistPerfil (que mostra os perfis de acordo com a visão escolhida) é preenchido corretamente porém não exibi a opção que ja esta cadastrada, ele troca e exibi o primeiro da lista. Se esta em modo de edição deve manter no item que esta cadastrado e se o usuário quiser trocar esse campo ao clicar na seta, aparece os opções , não é ? Como faço para posicionar exatamente no item que já esta cadastrado ?

Para isso basta você setar a propriedade SelectedValue com o campo que você quer que ele receba.

 

2) Quando tento salvar a alteração realizada aparece o seguinte erro:

 

 

"Cannot insert the value NULL into column 'IDPERFIL', table 'crweb3.dbo.USUARIO'; column does not allow nulls. UPDATE fails.

The statement has been terminated. "

Você esta tentando inserir um registro sem preencher o campo IDPERFIL e ele não aceita valor nulo

 

 

 

 

Alterei a propriedade "EditDataBindings" do DropDownPerfil, coloquei em "SelectedValue" (Custom binding pois é a unica opção disponível) = Bind("IDPERFIL").

 

Ao rodar o programa realmente os dados aparecem na posição correta e ao gravar não apresenta mais o erro porém ... se eu tentar mudar a visão, ele não localiza mais os perfis correspondentes e ocorre o seguinte erro

 

"Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control. "

 

Devo colocar o SelectedValue somente no evento databound ? Ou não ? Como faço isso ?

 

Os outros erros eu respondo depois que conseguir fazer esse, ok ?

 

Obrigada :)

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.