Fórum Construir WS com select Box #3341

05/03/2009

0

Preciso de ajuda para construir uma rotina para um webservice que lista em um selectbox os estados e paises disponiveis no sistema.   Ou seja o campo pais não pode retornar qualquer coisa, tem que ser um item de um select box.
Régis Mello

Régis Mello

Responder

Posts

05/03/2009

[devmedia .net]

Opa, tudo bem Régis ? Bom não sei se entendi corretamente.. Vamos lá.. Você quer chamar um webservices que retorne os estados de um determinado país ? Passando como parâmetro para o webservices o País e ele retornará os estados do mesmo ??   É isso ?   Caso contrário, por favor tente ser uma pouco mais específico..   Grande abraço   Fico no aguardo de seu retorno..   Carlos Jr
Responder

Gostei + 0

05/03/2009

Régis Mello

Não.   Tenho um WS que solicita o pais, mas não posso aceitar qualquer pais, precisa ser um pais válido, por isso pensei gerar um selectbox para apresentar os paises, isso é possível?   Um outro exemplo que também preciso fazer é mostrar um selectbox com nomes e Ids de categorias existentes para inserção de uma nova sub-categoria.   Espero que eu tenha conseguido me explicar.   Att Regis
Responder

Gostei + 0

05/03/2009

[devmedia .net]

Opa, bom...   No caso do WebService você terá que ter na sua tela que o chama.. criar um ComboBox com os paises válidos...   comboBox1.DataSource = dt; Aqui você coloca a tabela que contém os países válidos
comboBox1.DataTextField = "NOME_PAIS"; // Nome do campo que contém o nome do país na tabela comboBox1.DataValueField = "CODIGO_PAIS"; // Nome do campo que contém o código do país na tabela comboBox1.DataBind();     Então na chamada do método do seu WS você colocará   metodoWebservice(comboBox1.SelectedValue);//comboBox1.SelectedValue é o código do país na tabela   só isso...   Quanto a outra dúvida...   Você deve fazer a mesma coisa de cima...   comboBox1.DataSource = dt; Aqui você coloca a tabela que contém os países válidos
comboBox1.DataTextField = "NOME_CATEGORIA"; // Nome do campo que contém o nome da categoria comboBox1.DataValueField = "CODIGO_CATEGORIA"; // Nome do campo que contém o código da categoria comboBox1.DataBind();   Na sua tela você terá um TextBox que corresponderá ao nome da subcategoria... txtSubCategoria   no método de inserção da subcategoria você fará..
inserirSubcategoria(comboBox1.SelectedValue, txtSubCategoria.Text);   só implementar essa idéia e boa...   Aguardo seu retorno..   Grande Abraço   Carlos Jr
Responder

Gostei + 0

06/03/2009

[devmedia .net]

Olá Régis, tudo bem? Estou aguardando seu retorno para saber se resolveu seu problema, ou se precisa de mais ajuda.   Grande abraço   Carlos Jr
Responder

Gostei + 0

06/03/2009

Régis Mello

Sinceramente nao entendi a explicação.   Eu não vou chamar o WS , eu vou criá-lo para ser chamado por outro sistema, isso quer dizer que eu não consigo forçar o sistema que invoca meu WS a seguir um padrão, sem consultar um tabela do meu Banco e verificar que aquele dado existe?   Regis
Responder

Gostei + 0

07/03/2009

[devmedia .net]

Oi Régis, tduo bem ?   Bom, pelo que eu entendi você deseja chamar um webservice passando parâmetro de país, mas quer validar o país, para que não passem um país que não existe correto ?   Para isso faça os passos que eu detalhei...   Me desculpe se entendi errado, por favor me explique novamente com mais detalhes, para que possamos continuar nosso atendimento com mais objetividade e rapidez.   No aguardo...   Grande Abraço   Carlos Jr
Responder

Gostei + 0

09/03/2009

[devmedia .net]

Oi Régis tudo bem ? Estou aguardando seu retorno para que possamos dar continuidade ao seu chamado, e lhe ajudar na solução da sua dúvida.   Abraços   Carlos Jr
Responder

Gostei + 0

10/03/2009

Régis Mello

Preciso gravar umas fotos em um diretório do meu WS , e gravar o caminho no Banco de Dados , através de WS.   Tem alguma dica de como fazer isso?     Att Regis
Responder

Gostei + 0

10/03/2009

[devmedia .net]

Opa, blz Régis...   Bom para isso você deve fazer os métodos normais para salvar um arquivo..   Coloque um objeto InputFile na tela, e um botão... No evento do botão salvar coloque o código que irá salvar a imagem em sua máquina chamando um método no webservices que irá salvar a image no servidor.     protected void btnUpload_Click(object sender, EventArgs e)   {     //Pegamos o caminho do diretório onde vamos salvar os Uploads     String caminho = Server.MapPath("upload\\");     FileUpload iFile = "C:\Seudiretorio\imagem.gif"     //Salvo o arquivo no diretório base, nesse caso "caminho".     iFile.PostedFile.SaveAs(caminho + Path.GetFileName(iFile.PostedFile.FileName));     lblMensagem.Text = "Upload do: " + iFile.FileName.ToString() + " arquivo Realizado com sucesso!";      } Salve no banco de dados apenas o nome da imagem, e em seu web.config coloque uma chave para o endereço padrao.   No momento de recuperar essa imagem pegue novamente o endereço padrão e concatene com o nome da imagem que buscou na base de dados.   Escrevi abaixo um um exemplo funcional: <script runat="server"> 
     Dim StrConnection As String = "Provider=microsoft.Jet.Oledb.4.0;Data Source=c:\\database\tblImagem.mdb" 
      
     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
         Try 
             If FileUpload1.PostedFile.FileName <> "" Then 
                 'Cria a conexão do banco de dados 
                  
                 Dim ObjConnection As New OleDbConnection(StrConnection) 
                  
                 'Cria a string do comando sql 
                  
                 Dim SqlStr As String = "Insert into tblImagem(Nome,Imagem,Tamanho) values(@nome,@imagem,@tamanho)" 
                  
                 'Cria o objeto OleDbCommand para adicionar a string de conexão e comando sql 
                  
                 Dim ObjCommand As New OleDbCommand(SqlStr, ObjConnection) 
                  
                 'Adiciona o parametro dos objtos ao OleDbCommand 
                  
                 ObjCommand.Parameters.AddWithValue("@nome", TextBox1.Text) 
                 ObjCommand.Parameters.AddWithValue("@imagem", FileUpload1.PostedFile.FileName) 
                 ObjCommand.Parameters.AddWithValue("@tamanho", FileUpload1.PostedFile.ContentLength) 
                  
                 'Abri a conexão 
                 ObjConnection.Open() 
                 'Executa o comando no banco 
                 ObjCommand.ExecuteNonQuery() 
                                 
                  
                 'Cria o camando para trazer o ultimo registro 
                 Dim SqlMax As String = "Select Max(ID) from tblImagem" 
                  
                 'Cria o comando para calcular o ultimo registro 
                  
                 Dim ObjCommandMax As New OleDbCommand(SqlMax, ObjConnection) 
                  
                 'Determina o numero da imagem 
                  
                 Dim nMax As String = ObjCommandMax.ExecuteScalar().ToString() 
                  
                 'Nome temporario 
                  
                 nMax = nMax + ".jpeg" 
                  
                 'Salva o arquivo 
                  
                 FileUpload1.SaveAs(Server.MapPath("Imagens/" + nMax)) 
                  
                 'Cria outra string Sql para atualiza o banco  
                  
                 Dim StrSqlAtualiza As String = "Update tblImagem set imagem=@imagem where id=@id" 
                  
                 'Cria o ObjCommand para ser executado 
                  
                 Dim ObjCommandAtualiza As New OleDbCommand(StrSqlAtualiza, ObjConnection) 
                  
                 'Adiciona os parametros 
                  
                 ObjCommandAtualiza.Parameters.AddWithValue("@imagem", Server.MapPath("imagens/") & nMax) 
                 ObjCommandAtualiza.Parameters.AddWithValue("@id", ObjCommandMax.ExecuteScalar().ToString()) 
                  
                 'Executa o comando 
                 ObjCommandAtualiza.ExecuteNonQuery() 
                  
                 'fecha a conexão 
                  
                 ObjConnection.Close() 
  
                 GridView1.DataBind() 
                  
             End If 
         Catch ex As Exception 
             MsgBox(ex.Message) 
         End Try 
     End Sub 
 </script> 
  
 <html xmlns="http://www.w3.org/1999/xhtml"> 
 <head runat="server"> 
     <title></title> 
 </head> 
 <body> 
     <form id="form1" runat="server"> 
     <div> 
          
         <p> 
             
                 <br /> 
                 <br /> 
                 <br /> 
                 Nome: 
                 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
                 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"  
                     ControlToValidate="TextBox1"  
                     ErrorMessage="Campo Obrigatório">*</asp:RequiredFieldValidator> 
                 &nbsp;<p> 
                 </p> 
                 <asp:ValidationSummary ID="ValidationSummary1" runat="server"  
                     EnableClientScript="False" ShowMessageBox="True" ShowSummary="False" /> 
                 <p> 
                     Foto: 
                     <asp:FileUpload ID="FileUpload1" runat="server" /> 
                 </p> 
                 <p> 
                     <asp:Button ID="Button1" runat="server" onclick="Button1_Click"  
                         Text="Inserir" /> 
                 </p>      Aguardo seu retorno, Abraços Carlos Jr  
Responder

Gostei + 0

10/03/2009

Régis Mello

NÃO entendi, no WS não tem protect void... como assim ,  como vou chamar uma página pelo ws? 
Responder

Gostei + 0

10/03/2009

[devmedia .net]

Oi Régis, para ser enviado um arquivo você precisa primeiro selecioná-lo, para selecioná-lo você deve criar uma página aspx , no aspx você coloca o método abaixo que lhe enviei, chamando um webservice e passando o endereço do arquivo como parâmetro e o nome. Esse método que lhe enviei é de um button se puder reparar, não existe button no ws mesmo.   O exemplo que lhe enviei para que você tenha uma idéia de como fazer, é só implementar o mesmo código no WS.   O seu chamado está diferente do escopo pelo qual foi aberto, terá que abrir outro chamado sobre envio de imagens pelo WS, ok !?   Grande abraço   Carlos Jr
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar