Member 11714515 Ответов: 1

Как заселить страну, штат, город в моем выборе ASP.NET управление выпадающим списком с помощью кода javascript>


Пожалуйста, дайте решение моего запроса, я пытаюсь получить данные в asp.net выпадающий контроль, но еще не закончен, я хочу сделать регистрационную форму, но в этой форме нужно иметь код на стороне клиента, например, автоматически заполнять данные в моем выпадающем списке для страны, штата, города..---------------------------------------------------------------------------------------------------------.

Что я уже пробовал:

var countryStateInfo = {
    "USA": {
        "California": {
            "Los Angeles": ["90001", "90002", "90003", "90004"],
            "San Diego": ["92093", "92101"]
        },
        "Texas": {
            "Dallas": ["75201", "75202"],
            "Austin": ["73301", "73344"]
        }
    },
    "India": {
        "Assam": {
            "Dispur": ["781005"],
            "Guwahati": ["781030", "781030"]
        },
        "Gujarat": {
            "Vadodara": ["390011", "390020"],
            "Surat": ["395006", "395002"]
        }
    }
}

window.onload = function () {

    //Get html elements
    var DDLCountry = document.getElementById("DDLCountry"); 
    var DDLState = document.getElementById("DDLState");
    var DDLDist = document.getElementById("DDLDist");
    var DDLCity = document.getElementById("DDLCity");

    ///DDLCountry, DDLState , DDLDist, DDLCity

    //Load countries
    for (var country in countryStateInfo) {
        DDLCountry.options[DDLCountry.options.length] = new Option(country, country);
    }

    //County Changed
    DDLCountry.onchange = function () {

        DDLState.length = 1; // remove all options bar first
        DDLDist.length = 1; // remove all options bar first
        DDLCity.length = 1; // remove all options bar first

        if (this.selectedIndex < 1)
            return; // done

        for (var state in countryStateInfo[this.value]) {
            DDLState.options[DDLState.options.length] = new Option(state, state);
        }
    }

    //State Changed
    DDLState.onchange = function () {

        DDLDist.length = 1; // remove all options bar first
        DDLCity.length = 1; // remove all options bar first

        if (this.selectedIndex < 1)
            return; // done

        for (var city in countryStateInfo[DDLCountry.value][this.value]) {
            DDLDist.options[DDLDist.options.length] = new Option(city, city);
        }
    }

    //City Changed
    DDLDist.onchange = function () {
        DDLCity.length = 1; // remove all options bar first

        if (this.selectedIndex < 1)
            return; // done

        var zips = countryStateInfo[DDLCountry.value][DDLState.value][this.value];
        for (var i = 0; i < zips.length; i++) {
            DDLCity.options[DDLCity.options.length] = new Option(zips[i], zips[i]);
        }
    }
}


Asp.net код:

<div class="col-md-4 uppad"><label>Country *</label>
                           <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DDLCountry"  ErrorMessage="Select Country" ForeColor="Red" InitialValue="--Select Customer Type--" ValidationGroup="hashmi"></asp:RequiredFieldValidator>
                           <asp:DropDownList ID="DDLCountry" runat="server"  class="form-control" size="1" ><%--OnSelectedIndexChanged="DDLState_SelectedIndexChanged">--%>
                                <%--<asp:ListItem>-- Select Country --</asp:ListItem>--%>
                           </asp:DropDownList></div>

                            <div class="col-md-4 uppad"><label>State *</label>
                           <asp:RequiredFieldValidator ID="RequiredFieldValidator24" runat="server" ControlToValidate="DDLState" ErrorMessage="Select State" ForeColor="Red" InitialValue="--Select State--" ValidationGroup="hashmi"></asp:RequiredFieldValidator>
                           <asp:DropDownList ID="DDLState" runat="server"  class="form-control" OnSelectedIndexChanged="DDLState_SelectedIndexChanged">
                               <%--<asp:ListItem>--Select State--</asp:ListItem>--%>
                           </asp:DropDownList></div>

                           <div class="col-md-4 uppad"><label>District *</label>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator25" runat="server" ControlToValidate="DDLDist" ErrorMessage="Select District" ForeColor="Red" InitialValue="--Select District--" ValidationGroup="hashmi"></asp:RequiredFieldValidator>
                            <asp:DropDownList ID="DDLDist" runat="server"  class="form-control">
                                 <%--<asp:ListItem>--Select District--</asp:ListItem>--%>
                            </asp:DropDownList> </div>

                          <div class="col-md-4 uppad"><label>City *</label>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator26" runat="server" ControlToValidate="DDLCity" ErrorMessage="Select City" ForeColor="Red" InitialValue="--Select City--" ValidationGroup="hashmi"></asp:RequiredFieldValidator>
                            <asp:DropDownList ID="DDLCity" runat="server"  class="form-control">
                                <%--<asp:ListItem>--Select City--</asp:ListItem>--%>
                            </asp:DropDownList> </div>
                        </div>

1 Ответов

Рейтинг:
0

Vincent Maverick Durano

Возможно, вам нужно сначала понять концепции и основы серверных элементов управления и клиентских функций в контексте ASP.NET. По сути, вы должны избегать, когда это возможно, смешивания вашей серверной реализации с клиентской. DropDownList управление-это серверное управление, и они предназначены для манипулирования на стороне сервера, смешивая его с JavaScript это "выполнимо", однако это доставит вам неприятности, когда функциональность усложнится.

Если вы хотите реализовать каскадирование DropDownList на клиенте, то вы можете легко сделать это с помощью jQuery. Вот вам пример: Каскадные выпадающие списки с помощью jQuery и ASP.NET[^]

Однако, если вы действительно нуждаетесь в JavaScript, то нет никакой необходимости для вас, чтобы использовать asp.net элемент управления dropdownlist. Вот краткий пример:

HTML:

<select name="optone" id="countrySel" size="1">
    <option value="" selected="selected">Select Country</option>
</select>
<br>
<br>
<select name="opttwo" id="stateSel" size="1">
    <option value="" selected="selected">Select State</option>
</select>
<br>
<br>
<select name="optthree" id="citySel" size="1">
    <option value="" selected="selected">Select City</option>
</select>


ЯЗЫК JAVASCRIPT:
var countryStateInfo = {
    "USA": {
        "California": {
            "Los Angeles": ["90001", "90002", "90003", "90004"],
            "San Diego": ["92093", "92101"]
        },
        "Texas": {
            "Dallas": ["75201", "75202"],
            "Austin": ["73301", "73344"]
        }
    },
    "India": {
        "Assam": {
            "Dispur": ["781005"],
            "Guwahati": ["781030", "781030"]
        },
        "Gujarat": {
            "Vadodara": ["390011", "390020"],
            "Surat": ["395006", "395002"]
        }
    }
}
window.onload = function () {
    var countrySel = document.getElementById("countrySel"),
        stateSel = document.getElementById("stateSel"),
        citySel = document.getElementById("citySel");
        
    for (var country in countryStateInfo) {
        countrySel.options[countrySel.options.length] = new Option(country, country);
    }
    
    countrySel.onchange = function () {
        stateSel.length = 1; // remove all options bar first
        citySel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          stateSel.options[0].text = "Select State"
          citySel.options[0].text = "Select City"
          return; // done   
        }  
        stateSel.options[0].text = "Select State"
        for (var state in countryStateInfo[this.value]) {
            stateSel.options[stateSel.options.length] = new Option(state, state);
        }
        if (stateSel.options.length==2) {
          stateSel.selectedIndex=1;
          stateSel.onchange();
        }  
        
    }
    
    countrySel.onchange(); // reset in case page is reloaded
    stateSel.onchange = function () {
        citySel.length = 1; // remove all options bar first
        if (this.selectedIndex < 1) {
          citySel.options[0].text = "Please select State first"
          return; // done   
        }  
        citySel.options[0].text = "Please select City"

        for (var city in countryStateInfo[countrySel.value][this.value]) {
         
            citySel.options[citySel.options.length] = new Option(city, city);
        }
        if (citySel.options.length==2) {
          citySel.selectedIndex=1;
          citySel.onchange();
        }  
        
    }
}


Если вы хотите использовать ASP.NET DropDownList контроль затем замените это:

var countrySel = document.getElementById("countrySel"),
    stateSel = document.getElementById("stateSel"),
    citySel = document.getElementById("citySel");


с этим:

var countrySel = document.getElementById("<%= DDLCountry.ClientID %>"),
    stateSel = document.getElementById("<%= DDLState.ClientID %>"),
    citySel = document.getElementById("<%= DDLCity.ClientID %>");


и обязательно сделайте это выключить AutoPostbackдля всех ваших DropDownlist.

Вы также можете реализовать его с помощью серверной части с помощью DropDownList- Это действительно зависит от тебя.