cintiadel 0 Denunciar post Postado Fevereiro 11, 2009 Estou tentando fazer o dropdown em cascata assim como esse exemplo: http://www.asp.net/AJAX/AjaxControlToolkit...ngDropDown.aspx só q nele é criado um xml, para preencher o dropdown, e no meu caso quero que seja preenchido com o datasource (dados do banco) como faço??? tentei fazer e da esse erro: AjaxControlToolkit.CascadingDropDown missing required ServiceMethod property value for DropDownList2_CascadingDropDown. Nome do parâmetro: ServiceMethod o q eu coloco nesse parametro? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Fevereiro 11, 2009 Olá Comecei agora a trabalhar com ajax e um dos motivos foi esse controle pois preciso controlar 3 drops. Pelo que entendi desse controle você só pode usar o cascadingDropDown com um webservice. O que eu fiz com o autocomplete foi fazer o webservice com um dataset, mas ainda não está pronta, mas só pra dar uma ideia Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 11, 2009 http://www.asp.net/AJAX/AjaxControlToolkit...ngDropDown.aspx Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 11, 2009 http://www.asp.net/AJAX/AjaxControlToolkit...ngDropDown.aspx Abraços... exatamente o link q eu estava utilizando, só que como citei acima, aqui no link o dropdown é populado atraves de um arquivo xml, preciso fazer isso populando ele com dados do banco de dados (sqldatasource de preferencia)???? Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Fevereiro 11, 2009 http://www.asp.net/AJAX/AjaxControlToolkit.../CCDWithDB.aspx Eu fiz mais ou menos isso com o autocomplete, deve servir para o cascadingdropdownlist Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 12, 2009 http://www.asp.net/AJAX/AjaxControlToolkit.../CCDWithDB.aspx Eu fiz mais ou menos isso com o autocomplete, deve servir para o cascadingdropdownlist tentei converter pra vb, mas uma catastrofe...rsrsrs..vários erros...várias palavras grifadas em azul. e queria saber onde eu coloco a conexao e o select do banco ???? segue o codigo: Imports System Imports System.Web Imports System.Collections Imports System.Collections.Generic Imports System.Collections.Specialized Imports System.Web.Services Imports System.Web.Services.Protocols Imports AjaxControlToolkit Imports System.Data Imports System.Data.SqlClient <WebService([Namespace]:="http://tempuri.org/"), WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ Public Class Aluno Inherits System.Web.Services.WebService Public Sub New() End Sub 'New Public<WebMethod()> _ Function GetMakes(knownCategoryValues As String, category As String) As CascadingDropDownNameValue() Dim makeAdapter As New CarsTableAdapters.MakeTableAdapter() Dim makes As Cars.MakeDataTable = makeAdapter.GetMakes() List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); Dim dr As DataRow For Each dr In makes Dim make As String = CStr(dr("Make")) Dim makeId As Integer = CInt(dr("MakeID")) values.Add(New CascadingDropDownNameValue(make, makeId.ToString())) Next dr Return values.ToArray() End Function 'GetMakes Public<WebMethod()> _ Function GetModelsForMake(knownCategoryValues As String, category As String) As CascadingDropDownNameValue() Dim kv As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues) Dim makeId As Integer If Not kv.ContainsKey("Make") Or Not Int32.TryParse(kv("Make"), makeId) Then Return Nothing End If List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>() Dim makeAdapter As New CarsTableAdapters.ModelTableAdapter() Dim models As Cars.ModelDataTable = makeAdapter.GetModelsForMake(makeId) List < CascadingDropDownNameValue > values = New List(__unknown < CascadingDropDownNameValue > __unknown) For Each dr In models values.Add(New CascadingDropDownNameValue(CStr(dr("Model")), dr("ModelID").ToString())) Next dr Return values.ToArray() End Function 'GetModelsForMake Public<WebMethod()> _ Function GetColorsForModel(knownCategoryValues As String, category As String) As CascadingDropDownNameValue() Dim kv As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues) Dim modelId As Integer If Not kv.ContainsKey("Model") Or Not Int32.TryParse(kv("Model"), modelId) Then Return Nothing End If Dim adapter As New CarsTableAdapters.ColorTableAdapter() Dim colorTable As Cars.ColorDataTable = adapter.GetColorsForModel(modelId) List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>() Dim dr As DataRow For Each dr In colorTable values.Add(New CascadingDropDownNameValue(CStr(dr("Color")), dr("ColorID").ToString())) Next dr Return values.ToArray() End Function 'GetColorsForModel End Class por enquanto coloquei o do exemplo só pra me acertar depois coloco meus campos Compartilhar este post Link para o post Compartilhar em outros sites
SID_SILVA 0 Denunciar post Postado Fevereiro 12, 2009 Ola, voce pode definir a conexao com seu banco de dados no arquivo web.config. <connectionStrings> <add name="NomedaConexao" connectionString="Data Source=LocaldaSuaFonteDeDados;Initial Catalog=SeuBancoDeDados;Persist Security Info=True;User ID=SeuUsuario;Password=SuaSenha" providerName="System.Data.SqlClient"/> </connectionStrings> Dai dentro da sua aplicacao (dentro do codigo), voce informa a conexao. conexao = New SqlConnection(ConfigurationManager.ConnectionStrings("NomedaConexao").ConnectionString) Tambem dentro do codigo voce ira colocar seus Select´s, digo nos arquivos ".aspx.vb" ou ".aspx.cs". Eu fiz um CascadingDropdown mas nao usando esse exemplo e funcionou com perfeitamente. Claro que eu usei o Ajax mas em sua forma mais simples, com o UpdatePainel apenass. Boa Sorte Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 12, 2009 Ola, voce pode definir a conexao com seu banco de dados no arquivo web.config. <connectionStrings> <add name="NomedaConexao" connectionString="Data Source=LocaldaSuaFonteDeDados;Initial Catalog=SeuBancoDeDados;Persist Security Info=True;User ID=SeuUsuario;Password=SuaSenha" providerName="System.Data.SqlClient"/> </connectionStrings> Dai dentro da sua aplicacao (dentro do codigo), voce informa a conexao. conexao = New SqlConnection(ConfigurationManager.ConnectionStrings("NomedaConexao").ConnectionString) Tambem dentro do codigo voce ira colocar seus Select´s, digo nos arquivos ".aspx.vb" ou ".aspx.cs". Eu fiz um CascadingDropdown mas nao usando esse exemplo e funcionou com perfeitamente. Claro que eu usei o Ajax mas em sua forma mais simples, com o UpdatePainel apenass. Boa Sorte eu ate fiz um com updatepanel, mas acontece q se ele muda a seleção, ele começa a duplicar dados no dropdown Compartilhar este post Link para o post Compartilhar em outros sites
Macal 0 Denunciar post Postado Fevereiro 12, 2009 Se a sua dropdown é preenchida no Page Load e durante o processo de cascade você da um load na pagina, pode ocorrer duplicação. Verifique isso. Compartilhar este post Link para o post Compartilhar em outros sites
SID_SILVA 0 Denunciar post Postado Fevereiro 12, 2009 Declarou o Postback? Compartilhar este post Link para o post Compartilhar em outros sites
SID_SILVA 0 Denunciar post Postado Fevereiro 12, 2009 Veja : If Not Page.IsPostBack Then MontaModalidades() 'Subrotina que ira carregar o Combo. . . . endif Sub MontaModalidades() Dim conexao As SqlConnection Dim sql As String = "SELECT MODAL_ID,MODAL_NOME FROM MODALIDADES ORDER BY MODAL_NOME" Dim da As SqlDataAdapter Dim ds As DataSet conexao = New SqlConnection(ConfigurationManager.ConnectionStrings("SuaConexao").ConnectionString) Try conexao.Open() da = New SqlDataAdapter(sql, conexao) ds = New DataSet() da.Fill(ds, "MODALIDADES") With CboModalidade .DataTextField = "MODAL_NOME" .DataValueField = "MODAL_ID" .DataSource = ds.Tables("MODALIDADES").DefaultView .DataBind() End With CboModalidade.Items.Insert(0, "Selecione a Modalidade") Finally conexao.Close() conexao = Nothing End Try End Sub Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Fevereiro 12, 2009 Declarou o Postback?declarei sim Autopostback = True estou populando através do sqldatasource... mas to querendo saber como faz com cascadingdropdown, mesmo Compartilhar este post Link para o post Compartilhar em outros sites
SID_SILVA 0 Denunciar post Postado Fevereiro 12, 2009 Ola, quanto ao PostBack, eu estava me referindo a linha abaixo: If Not Page.IsPostBack Then . . endif Que evitara que certos comandos sejam executados toda vez que houver um PostBack. Quando ao Cascading, eu tive esse problema, pois tenho uma rotina com 2 DropDown, onde o segundo depende do primeiro.Baseado em cada uma das opcoes do primeiro Drop, eu terei uma liasta de opcoes para o segundo. Eu ainda sou iniciante e quebrei a cabeca para conseguir.Inclusive tentei fazer como voce, utilizando-me apenas do DataSource, a fim de nao ter que programar, afinal pode-se popular varios controles dessa forma e é bastante pratico. Entretanto eu tive que colocar uma mensagem nos 2 Drop : Selecione o Item Desejado. Pois na hora de selecionar o item no segundo Drop, eu preciso obrigatoriamente que um item ja tenha sido selecionado no primeiro.E em segundo lugar eu nao posso efetuar a gravacao dos dados se nenhum dos Drop´s tiver sido selecionado. Bem eu fiz assim : Nesse exemplo eu tenho um Drop com Clientes e outro e Gerentes. Trabalho com varias empresas que sao o Cliente e essas empresas possuem seus gerentes. Quando clico no cliente, sao selecionados apenas os gerentes do respectivo cliente que selecionei no primeiro Drop [code] Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Sql As String Dim cmd As SqlCommand Dim dr As SqlDataReader = Nothing Dim conexao As SqlConnection If Not Page.IsPostBack Then MontaCliente() Aqui eu monto o Primeiro DropDown de Clientes Nao posso montar o segundo, pois preciso selecionar um item no primeiro Drop antes. End If End Sub Sub MontaCliente() Dim conexao As SqlConnection Dim sql As String Dim da As SqlDataAdapter Dim ds As DataSet sql = "SELECT CAMPO1,CAMPO2,CAMPO3... FROM CLIENTES ORDER BY CLIENTE_NOME" conexao = New SqlConnection(ConfigurationManager.ConnectionStrings("SuaConexao").ConnectionString) Try conexao.Open() da = New SqlDataAdapter(sql, conexao) ds = New DataSet() da.Fill(ds, "CLIENTES") With CboCliente .DataTextField = "CLIENTE_NOME" .DataValueField = "CLIENTE_ID" .DataSource = ds.Tables("CLIENTES").DefaultView .DataBind() End With CboCliente.Items.Insert(0, "Selecione o Cliente") Finally conexao.Close() conexao = Nothing End Try End Sub ' Apos o click no cliente selecionado, uso o evendo SelectedIndexChanged para carregar os gerentes do segundo Drop,utilizando o ID do cliente do primeiro Drop (CboCliente.SelectedItem.Value).Dessa forma eu seleciono apenas os gerentes referentes ao cliente selecionado. Protected Sub CboCliente_SelectedIndexChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Handles CboCliente.SelectedIndexChanged Dim conexao As SqlConnection Dim sql As String Dim da As SqlDataAdapter Dim ds As DataSet sql = "SELECT campo1,campo2... FROM REL_GERENTES " sql += "WHERE CLIENTE_ID=" + CboCliente.SelectedItem.Value sql += "ORDER BY CLIENTE_GERENTE" conexao = New SqlConnection(ConfigurationManager.ConnectionStrings("SuaConexao").ConnectionString) Try conexao.Open() da = New SqlDataAdapter(sql, conexao) ds = New DataSet() da.Fill(ds, "REL_GERENTES") With CboGerenteCliente .DataTextField = "CLIENTE_GERENTE" .DataValueField = "GERENTE_ID" .DataSource = ds.Tables("REL_GERENTES").DefaultView .DataBind() End With Finally conexao.Close() conexao = Nothing End Try End Sub Bem, isso e tudo, boa sorte Compartilhar este post Link para o post Compartilhar em outros sites