Avatar billede badal Nybegynder
12. december 2010 - 17:19 Der er 5 kommentarer og
1 løsning

JSON ASP.NET Dropdownlist

Jeg benytter denne JSON funktion til at binde til en dropdownliste. Den fungere ganske fint.

$().ready(function () {
            $.ajax({
                type: "POST",
                url: "create-advertisement.aspx/GetStateList",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $("#<%= ddlState.ClientID %>").get(0).options.length = 0;
                    $("#<%= ddlState.ClientID %>").get(0).options[0] = new Option("-All-", "");

                    $.each(msg.d, function (index, item) {
                        $("#<%= ddlState.ClientID %>").get(0).options[$("#<%= ddlState.ClientID %>").get(0).options.length] = new Option(item.Name, item.Id);
                    });

                    $("#<%= ddlState.ClientID %>").bind("change", function () {
                        GetCity($(this).val());
                    });
                },
                error: function () {
                    alert("Failed to load states");
                }
            });
        });

I codebind er det denne funktion der bruges:

[WebMethod]
    public static List<State> GetStateList()
    {
        return StateBusiness.GetStates();
    }


Nu er mit problem at når jeg henter data igen fra databasen så skal dropdownlisten være markeret med item som brugeren gemte tidligere. Hvis brugeren har gemt "Californien", så skal den være valgt i dropdownlisten.

Hvordan kan det laves ?
Avatar billede heinzdmx Nybegynder
12. december 2010 - 18:15 #1
Hvad med at i starten af din succes metode, finder nuværende værdi gemmer den i en variable og så i slutningen af metoden sætter den som den valgte?

Se:

http://stackoverflow.com/questions/1643227/jquery-get-selected-text-from-dropdownlist

http://stackoverflow.com/questions/292615/how-can-i-set-the-value-of-a-dropdownlist-using-jquery
Avatar billede Syska Mester
12. december 2010 - 23:09 #2
Hej,

Jeg har ... godt nok med MVC lavet noget ala dette.

Cascading select list. Hvis der er noget indtastet bliver det også vedlige holdt ved postback til serveren.

Jeg sender elementer tilbage ala:
Item med 3 properties: Name(string), Value(string), Selected(bool)

Men hvorfor vil du hente de samme states igen? Det synes jeg virker mærkeligt ...

mvh
Avatar billede badal Nybegynder
14. december 2010 - 15:28 #3
Det kan godt være at det er mig der ikke bruger JSON som det er tiltænkt og at det dermed kan laves mere simpelt.

Sagen er ganske enkelt den at jeg har en side, hvor jeg kan oprette en ny bolig, og hvis der er en Id i query string, så betyder at det er en opdatering.

Case 1 - ny bolig: fungere fint.
Case 2 - Rediger bolig: I pageload henter jeg data fra db og binder dem til dropdownlisten. Her er det jeg ikke kan gennemskue hvordan jeg kan sætte en item i dropdown som den valgte.
Avatar billede Syska Mester
14. december 2010 - 16:14 #4
var listItems = Enumerable.Range(1, 20).Select(a => new ListItem(a.ToString(), a.ToString())).ToList();
            listItems[3].Selected = true;
            ddl.Items.AddRange(listItems.ToArray());

ddl er din DropDownList på aspx siden.

Det kan gøres på flere måder.

igen bruger vi vores listItems, dette kan også være en liste af dine egne objecter du binder til.

ddl.DataSource = listItems;
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.DataBind();
var findByText = ddl.Items.FindByText("10");
if (findByText != null)
    findByText.Selected = true;


Prøv at se om en af de 2 måder ik' virker.
Avatar billede badal Nybegynder
15. december 2010 - 01:10 #5
buzzz> Din anden metode virker. KOm gerne med et svar så giver jeg point.
Avatar billede Syska Mester
15. december 2010 - 01:16 #6
svar.

Begge burde nu virke, men du kan jo bruge den du helst vil.

mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester