Usuário com melhor resposta
GridView - DropDownList como Parametro para outro

Pergunta
-
Ola, postei essa dúvida lá no forum de ASP.NET, mas não obtive ajuda.
Estou colocando aqui, quem sabe alguem sabe como resolver.
preciso popular um dropdown dentro do gridview, em função de outro que tb esta dentro do grid.
exemplo:
no grid tenho uma coluna SECRETARIAS, e outra DEPARTAMENTOS.
Eu Preciso que ao selecionar a secretaria, a drop departamentos seja preenchida somente com os departamentos da secretaria selecionada no drop anterior.
O problema é que no sqldatasource ou no objectdatasource, no método select qdo eu vou passar o parametro, não aparece o controle dropdwn de secretarias, aparece apenas o gridview.
E dessa forma o drop de departamentos me traz todos os departamentos, independente da secretaria que eu escolho.
Eu pensei em uma 2ª alternativa, que seria colocar um label FORA do grid, e atribuir o valor da coluna secretaria do grid para esse label.
Então eu passararia para o drop de departamentos dentro do grid, o label como parametro.
o prolema é q não estou conseguindo passar o valor secretarias do grid para o label, alguem sabe como fazer??
ou então me indicar uma solução para os drop dentro do grid.
EDIT
ia esquecendo, o projeto é Web com C#.
abraço
Douglas
Respostas
-
Douglas, criei um projeto, mas entendi errado seu post, seu combo em cascata está dentro de um gridview fiz pensando outra coisa, mas agora que entendi seu problema, achei o que você precisa, e já tem os exemplos (está em vb, se tiver dificuldade com a linguagem avise):
http://mikepope.com/blog/fun/cascadingdropdowns_gridview.aspx- Sugerido como Resposta Drunk Charizard sexta-feira, 24 de julho de 2009 18:33
- Marcado como Resposta Douglas Luiz domingo, 26 de julho de 2009 16:41
Todas as Respostas
-
Douglas, já fiz isso mas utilizei o evento SelectedIndexChanged (quando alterarem o primeiro combo) do dropdown, via código dentro dele alterei a propriedade SelectCommand do sqldatasource, ou melhor ainda, alterar somente a propriedade SelectParameters via método Add, para isso deve utilizar um select indicando parâmeetros na propriedade SelectCommand, se preferir o primeiro jeito é mais fácil se nunca usou parâmetros, se tiver dúvida para fazer isso, te gero e passo o trecho de código.
- Sugerido como Resposta Drunk Charizard domingo, 19 de julho de 2009 18:06
- Editado Drunk Charizard domingo, 19 de julho de 2009 18:10
-
-
Douglas, criei um projeto, mas entendi errado seu post, seu combo em cascata está dentro de um gridview fiz pensando outra coisa, mas agora que entendi seu problema, achei o que você precisa, e já tem os exemplos (está em vb, se tiver dificuldade com a linguagem avise):
http://mikepope.com/blog/fun/cascadingdropdowns_gridview.aspx- Sugerido como Resposta Drunk Charizard sexta-feira, 24 de julho de 2009 18:33
- Marcado como Resposta Douglas Luiz domingo, 26 de julho de 2009 16:41
-
Grande Lênin, era exatamente isso, valeu pelo link.
cara eu tenho muita dificuldade para entender VB hehehe, sinceramente não consigo mesmo fazer a conversao para C#, se vc ou alguem que ler o tópico puder me ajudar na conversão, acho q o unico trecho em VB é esse abaixo:
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e _ As System.Web.UI.WebControls.GridViewRowEventArgs) If (e.Row.RowState And DataControlRowState.Edit) = _ DataControlRowState.Edit Then Dim dv As System.Data.DataRowView = e.Row.DataItem ' Preselect correct value in Manufacturers list Dim listManufacturers As DropDownList = _ e.Row.FindControl("listManufacturers") listManufacturers.SelectedValue = dv("ManufacturerID") ' Databind list of models in dependent drop-down list Dim listModels As DropDownList = _ e.Row.FindControl("listModels") Dim dsc As AccessDataSource = _ e.Row.FindControl("dsModelsByManufacturer") dsc.SelectParameters("ManufacturerID").DefaultValue = _ dv("ManufacturerID") listModels.DataBind() listModels.SelectedValue = dv("ModelID") End If End Sub
abraço e muito obrigado -
Tenta isso (fiz num ambiente separado,pode ter uma ou outra diferença, use "using System.Data;" ):
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowState == DataControlRowState.Edit)
{
DataRowView dv = (DataRowView)e.Row.DataItem;
DropDownList listManufacturers = (DropDownList)e.Row.FindControl("listManufacturers");
listManufacturers.SelectedValue = (string)dv.Row["ManufacturerID"];
DropDownList listModels = (DropDownList)e.Row.FindControl("listModels");
AccessDataSource dsc = (AccessDataSource)e.Row.FindControl("dsModelsByManufacturer");
dsc.SelectParameters.Add("ManufacturerID",(string)dv.Row["ManufacturerID"]);
listModels.DataBind();
listModels.SelectedValue = (string)dv.Row["ModelID"];
}
}- Editado Drunk Charizard domingo, 26 de julho de 2009 17:27
- Sugerido como Resposta Drunk Charizard domingo, 26 de julho de 2009 17:27