none
Werteübergabe aus DropDownList an SQL-Query RRS feed

  • Frage

  • Hallo zusammen

    Bin neu hier und der absolute Anfänger in Sachen ASP.NET!! Habe auch gleich ein Problem mit dem ich nicht weiterkomme!

    Ich habe eine DropDownList mit vordefinierten ListItems!

    Ich möchte nun die jeweils ausgewählten  Items an eine SQL-Query übergeben deren Ergebnis dann in einer zweiten DropDownList angezeigt wird!

    Die Ausgabe der ersten DropDownList soll also als Teil meiner SQL-Query dienen!

    Hoffe ich habe mich halbwegs verständlich ausgedrückt?!

    Über Hilfe würde ich mich sehr freuen!

    Gruß

    Marko

    Mittwoch, 21. März 2012 11:01

Antworten

  • So könntest du die Daten an ListBox 2 in abhängigkeit von der Auswahl an ListBox 1 im Codebehind anbinden.

        protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id = Int32.Parse(ddl_Product.SelectedItem.Value);
            ListBox2.DataSource = DB.Where(I => I.ListBoxitemID == id);
            ListBox2.DataTextField = "Name";
            ListBox2.DataValueField = "ID";
            ListBox2.DataBind();

        }

    in meinem Beispiel benutze ich die selected index Changed methode.  die daten bei mir haben in Listbox eins eine ID die aus einem Int besteht. da du deinen bisherigen code nicht gepostet hattest bin ich mal von so einem üblichen szenario ausgegangen.

    Listbox 2 wird dann mit der aus dem Query geholten daten gefüttert. auch hier haben die items, in meinem beispiel, die eigenschaft Name und ID.

    hoffe ich konnte dir ein wenig helfen.

    ansonsten einfach mit ein wenig mehr details, am besten mit deinem bisherigen code, nochmals melden.

    mfg

    Shmoo

    Mittwoch, 21. März 2012 12:01
  • Hallo Zusammen

    Erstmal DANKE für Eure Hilfe!!!!!

    Momentan funktioniert es mit unten stehendem Code!

    Ob das natürlich die optimale Lösung ist ,keine Ahnung!Bin wie schon gesagt ein blutiger Anfänger!

    {
        public partial class _Default : System.Web.UI.Page
        {   //This is your database connection:
            static string connectionString = "Data Source=Datenbank;Initial Catalog=production;Integrated Security=True;Asynchronous Processing=true";
            static SqlConnection cn = new SqlConnection(connectionString);
            IAsyncResult result;
            SqlDataReader reader;
            protected void Page_Load(object sender, EventArgs e)
            {

            }

            protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string ManufItem = DropDownList1.SelectedItem.ToString();
                string Query = "SELECT DISTINCT XXXX,'    ' AS [ItemRevision],'                       ' AS [EffectiveDate],YYYYYYYYY FROM ZZZZZZ WHERE AAAAAAAAA LIKE '%";
                Query += ManufItem.ToString();
                Query += "%' ORDER BY BBBBBBBBBBBB ";

                SqlCommand cmdQuery = new SqlCommand(Query, cn);
                cn.Open();
                result = cmdQuery.BeginExecuteReader();

              
                int count = 0;
                while (!result.IsCompleted)
                {
                    count += 1;
                    Console.WriteLine("Waiting ({0})", count);
                  
                    System.Threading.Thread.Sleep(100);
                }

                SqlDataReader reader = cmdQuery.EndExecuteReader(result);

                DropDownList2.DataSource = reader;
                DropDownList2.DataTextField = reader.GetName(0);
                DropDownList2.DataValueField = reader.GetName(0);
                DropDownList2.DataBind();                               
                cn.Close();
            }

            protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
            {

            }
        }
    }

    Die Lösung von Der_Shmoo hab ich leider nicht hinbekommen!

    Gruß Marko

    Donnerstag, 22. März 2012 06:53

Alle Antworten

  • So könntest du die Daten an ListBox 2 in abhängigkeit von der Auswahl an ListBox 1 im Codebehind anbinden.

        protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id = Int32.Parse(ddl_Product.SelectedItem.Value);
            ListBox2.DataSource = DB.Where(I => I.ListBoxitemID == id);
            ListBox2.DataTextField = "Name";
            ListBox2.DataValueField = "ID";
            ListBox2.DataBind();

        }

    in meinem Beispiel benutze ich die selected index Changed methode.  die daten bei mir haben in Listbox eins eine ID die aus einem Int besteht. da du deinen bisherigen code nicht gepostet hattest bin ich mal von so einem üblichen szenario ausgegangen.

    Listbox 2 wird dann mit der aus dem Query geholten daten gefüttert. auch hier haben die items, in meinem beispiel, die eigenschaft Name und ID.

    hoffe ich konnte dir ein wenig helfen.

    ansonsten einfach mit ein wenig mehr details, am besten mit deinem bisherigen code, nochmals melden.

    mfg

    Shmoo

    Mittwoch, 21. März 2012 12:01
  • Hallo Marko,

    damit man dir da helfen kann, müsste man erstmal sehen, wie genau Du überhaupt mit der Datenbank arbeitest. Ich befürchte zwar, dass Du sowas wie SqlDataSource, ... einsetzt, falls nicht, poste doch mal den relevanten Code, mit dem Du die Datenbankabfragen ausführst.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 21. März 2012 16:19
    Moderator
  • Hallo Zusammen

    Erstmal DANKE für Eure Hilfe!!!!!

    Momentan funktioniert es mit unten stehendem Code!

    Ob das natürlich die optimale Lösung ist ,keine Ahnung!Bin wie schon gesagt ein blutiger Anfänger!

    {
        public partial class _Default : System.Web.UI.Page
        {   //This is your database connection:
            static string connectionString = "Data Source=Datenbank;Initial Catalog=production;Integrated Security=True;Asynchronous Processing=true";
            static SqlConnection cn = new SqlConnection(connectionString);
            IAsyncResult result;
            SqlDataReader reader;
            protected void Page_Load(object sender, EventArgs e)
            {

            }

            protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string ManufItem = DropDownList1.SelectedItem.ToString();
                string Query = "SELECT DISTINCT XXXX,'    ' AS [ItemRevision],'                       ' AS [EffectiveDate],YYYYYYYYY FROM ZZZZZZ WHERE AAAAAAAAA LIKE '%";
                Query += ManufItem.ToString();
                Query += "%' ORDER BY BBBBBBBBBBBB ";

                SqlCommand cmdQuery = new SqlCommand(Query, cn);
                cn.Open();
                result = cmdQuery.BeginExecuteReader();

              
                int count = 0;
                while (!result.IsCompleted)
                {
                    count += 1;
                    Console.WriteLine("Waiting ({0})", count);
                  
                    System.Threading.Thread.Sleep(100);
                }

                SqlDataReader reader = cmdQuery.EndExecuteReader(result);

                DropDownList2.DataSource = reader;
                DropDownList2.DataTextField = reader.GetName(0);
                DropDownList2.DataValueField = reader.GetName(0);
                DropDownList2.DataBind();                               
                cn.Close();
            }

            protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
            {

            }
        }
    }

    Die Lösung von Der_Shmoo hab ich leider nicht hinbekommen!

    Gruß Marko

    Donnerstag, 22. März 2012 06:53
  • Dein Lösungsweg ist relativ ähnlich wie meiner.

    Der unterschied ist im wesentlichen das dein ganzer SQL teil bei mir in sowas wie "DB.IrgendwelcheEntities.Where(E => E.ID == id) steckt" .

    Wenn du dich für diese Variante interessiert schau dir mal LINQ to SQL an.

    Das macht meiner Meinung die ganze sache sehr viel übersichtlicher und vor allem auch einfacher.


    • Bearbeitet Lennart F Donnerstag, 22. März 2012 07:40
    Donnerstag, 22. März 2012 07:38
  • Danke nochmal für Eure Hilfe :-D

    Hab jetzt noch ein anderes Problem und zwar:

    Mein Code funktioniert im Moment so wie ich das gerne hätte, das Problem ist nur im IE stürzt die Anwendung ab,im Firefox und in GoogleChrome nicht,da funktioniert alles Einwandfrei???

    Beim debuggen im IE erscheinen auch keine Daten!

    Keine Ahnung warum!

    Gruß Marko

    Donnerstag, 29. März 2012 11:31