Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/04/2010, 07:07
Avatar de jahman
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;
    }