Foros del Web » Programando para Internet » ASPX (.net) »

Listbox siempre obtiene el mismo selectedvalue

Estas en el tema de Listbox siempre obtiene el mismo selectedvalue en el foro de ASPX (.net) en Foros del Web. hola tengo dos listbox, Kategoria y SubKategoria la idea es que al ir seleccionando ir armando la sqlquery, el problema es que siempre me agarra ...
  #1 (permalink)  
Antiguo 26/04/2010, 14:16
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Listbox siempre obtiene el mismo selectedvalue

hola
tengo dos listbox, Kategoria y SubKategoria la idea es que al ir seleccionando ir armando la sqlquery, el problema es que siempre me agarra el ultimo selectedvalue con el codigo q tengo pero no logro dejar en 0 la SUbkategoria cuando cambio la kategoria...

Código:
protected void Page_Load(object sender, EventArgs e)
{
SSubKategori = SubKategori.SelectedValue.Trim();
        if (SSubKategori != "0")
        {
            Q[0] = " IdSubKategori = " + SSubKategori;
            SSubKategori = "0";
        }
        else Q[0] = "0";

        string SFylke = Fylke.SelectedValue.ToString().Trim();
        if (SFylke != "0") Q[1] = string.Format(" PostCode in (SELECT postalcode FROM Nordlink.dbo.postalcode P WHERE fylke = '{0}')", SFylke);
        else Q[1] = "0";

        for (int i = 0; i < Q.Length; i++)
            if (Q[i][0] != Convert.ToChar("0"))
                contCero++;

        contCero = contCero - 1;
        for (int i = 0; i < Q.Length; i++)
            if (Q[i][0] != Convert.ToChar("0"))
                AddsqlQuery += " AND " + Q[i].ToString();

        Addquery += AddsqlQuery;
}
lo q esta en rojo hace q siempre agarre el ultimo seleccionado de la subkategoria alguien se le ocurre como cambiarlo o dejarlo en 0

he tratado de hacerlo con if(SubKategori.AutoPostBack) pero siempre es true independiente de cual usercontrol selecciono...gracias
  #2 (permalink)  
Antiguo 27/04/2010, 06:58
 
Fecha de Ingreso: enero-2008
Ubicación: Santiago
Mensajes: 49
Antigüedad: 16 años, 2 meses
Puntos: 4
Respuesta: Listbox siempre obtiene el mismo selectedvalue

Podrias explicar un poco mejor que es lo que quieres hacer??

No entiendo porque tienes eso programado en el Page_Load

Saludos.
  #3 (permalink)  
Antiguo 27/04/2010, 07:07
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Listbox siempre obtiene el mismo selectedvalue

la idea era a medida q iba seleccionando o deselecionando ir armando el WHERE de la query para luego agregarsela ala sentencia bueno en es codigo me habia confundido ya que siempre agregaba el selectedvalue de la subkategoria asi que decidi desarmarlo y armar la query en un funcion aparte

bueno aca tengo el codigo de 4 listbox que amedidas q va armando la query
siendo los padres los q estan en rojo y en lo q esta azul voy armando la query trate de hacer esa funcion como public string para retornarla al Page_load pero como que se ejecuta al ultimo y no actualiza la variable en el Page_load
cualquier sugerencia de una forma mejro bienvenido.....

Código:
string[] Q = new string[3];
    public string SSubKategori;
    public string Query;
    int contCero = 0;
    
    protected void Page_Load(object sender, EventArgs e)
    {
        string Addquery = "";
        string sql = "";
        
        if (!IsPostBack)
        {
            Kategori.Items.Insert(0, new ListItem("Velg.....", "-1"));
            sql = string.Format("SELECT IDGuid,MeglerFirma FROM SkaffMegler.dbo.CustomerCompanies WITH(NOLOCK)");
            List<object[]> data = Db.GetData(sql);
            for (int i = 0; i < data.Count; i++)
            {
                object[] obj = data[i];
                ListItem listItem = new ListItem(obj[1].ToString().Trim(), obj[0].ToString().Trim());
                Kategori.Items.Add(listItem);
            }
            if (Kategori.Items.Count > 0)
            {
                Kategori.SelectedIndex = 0;
                FillCategory();
            }

            Fylke.Items.Insert(0, new ListItem("Velg.....", "0"));
            sql = string.Format("SELECT DISTINCT Fylke FROM SkaffMegler.dbo.kommune");
            List<object[]> dataI = Db.GetData(sql);
            for (int i = 0; i < dataI.Count; i++)
            {
                object[] obj = dataI[i];
                ListItem listItemI = new ListItem(obj[0].ToString().Trim(), obj[0].ToString().Trim());
                Fylke.Items.Add(listItemI);
            }
            if (Fylke.Items.Count > 0)
            {
                Fylke.SelectedIndex = 0;
                FillFylke();
            }
        }
        if (Kategori.SelectedValue.ToString() != "0")
            Query = string.Format(" WHERE IdCompany = '{0}'", Kategori.SelectedValue.ToString());
        else if (!string.IsNullOrEmpty(Request["IdKat"]) && Kategori.SelectedValue.ToString() == "")
            Query = string.Format(" WHERE IdCompany = '{0}'", Kategori.SelectedValue.ToString());

       
    }



    private void FillCategory()
    {
        string sql = "";
        if (Kategori.SelectedValue != "")
        {
            sql = string.Format("SELECT IdGuid,MeglerKontor FROM SkaffMegler.dbo.CustomerOffices WHERE MeglerFirmaIdGuid = '{0}' ORDER BY MeglerKontor ASC", Kategori.SelectedValue);
            List<object[]> data = Db.GetData(sql);
            SubKategori.Items.Clear();
            ListItem listItemSubKat = new ListItem("Velg...", "0");
            SubKategori.Items.Add(listItemSubKat);
            for (int i = 0; i < data.Count; i++)
            {
                object[] obj = data[i];
                listItemSubKat = new ListItem(obj[1].ToString(), obj[0].ToString().Trim());
                SubKategori.Items.Add(listItemSubKat);
            }
        }
    }

    private void FillFylke()
    {
        string sql = "";
        if (Fylke.SelectedValue != "")
        {
            sql = string.Format("SELECT DISTINCT Kommune FROM SkaffMegler.dbo.kommune WHERE Fylke = '{0}' ORDER BY Kommune ASC", Fylke.SelectedValue);
            List<object[]> dataF = Db.GetData(sql);
            Kommune.Items.Clear();
            ListItem listItemFylke = new ListItem("Velg...", "0");
            Kommune.Items.Add(listItemFylke);
            for (int i = 0; i < dataF.Count; i++)
            {
                object[] obj = dataF[i];
                listItemFylke = new ListItem(obj[0].ToString(), obj[0].ToString().Trim());
                Kommune.Items.Add(listItemFylke);
            }
        }
    }


    protected void DropDownList01_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (Kategori.SelectedValue != "-1")
        {
            SubKategori.Items.Clear();
            SubKategori.Items.Insert(0, new ListItem("Velg.....", "-1"));
            FillCategory();            
        }
        MakeQuery();
    }

    protected void DropDownList03_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (Fylke.SelectedValue != "-1")
        {
            Kommune.Items.Clear();
            Kommune.Items.Insert(0, new ListItem("Velg.....", "-1"));
            FillFylke();
        }

        MakeQuery();
    }

    protected void DropDownList02_SelectedIndexChanged(object sender, EventArgs e)
    {
        MakeQuery();
    }

    protected void ClearSubcategories()
    {
        SubKategori.Items.Clear();
        SubKategori.Items.Insert(0, new ListItem("Velg.....", "-1"));
    }

    protected void MakeQuery()
    {
       
        if (SubKategori.SelectedValue != "") Q[0] = " IdKontor = " + SubKategori.SelectedValue;
        else Q[0] = "0";

        if (Fylke.SelectedValue != "0") Q[1] = " IdFylke = " + Fylke.SelectedValue;
        else Q[1] = "0";

        if (Kommune.SelectedValue != "") Q[2] = " IdKomunne = " + Kommune.SelectedValue;
        else Q[2] = "0";

        for (int i = 0; i < Q.Length; i++)
            if (Q[i][0] != Convert.ToChar("0"))
                contCero++;

        contCero = contCero - 1;
        for (int i = 0; i < Q.Length; i++)
            if (Q[i][0] != Convert.ToChar("0"))
                Query += " AND " + Q[i].ToString();

        Query = string.Format("SELECT Link,Nameweb,IdFilialer,PostCode,adress,Description,(SELECT COUNT(Id) FROM Nordlink.dbo.Filialer WHERE IdItem = i.Id) Total,TlfNummer,City,Epost FROM Nordlink.dbo.item i {0} ORDER BY Id DESC", Query);

        NameKat.Text = Query;
    }

Etiquetas: listbox, selectedvalue, siempre, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.