Обновление DropdownList динамически в модальном - PullRequest
1 голос
/ 25 марта 2019

Существует проблема, которую я не смог решить, из-за которой в форме есть кнопка «Добавить элемент». При нажатии открывается модальное окно, содержащее два раскрывающихся списка. Первый раскрывающийся список предварительно заполнен набором элементов, и в соответствии с этим выбором 2-й раскрывающийся список в идеале должен обновляться со своим собственным набором элементов.

Это первый выпадающий список, который содержит тип

<asp:DropDownList ID="DDLType" CssClass="form-control" runat="server" OnSelectedIndexChanged="LoadSubTypes" AutoPostBack="true">
    <asp:ListItem Value="Automobile">Automobile</asp:ListItem>
    <asp:ListItem Value="Aeroplane">Aeroplane</asp:ListItem>
    <asp:ListItem Value="Boat">Boat</asp:ListItem>
</asp:DropDownList>

Это второй раскрывающийся список, который в настоящее время пустует, пока не будет сделан выбор из первого раскрывающегося списка.

<asp:DropDownList ID="DDLSubType" CssClass="form-control" runat="server">
</asp:DropDownList>

С первым DDL, где есть OnSelectedIndexChange, это код позади.

protected void LoadSubTypes(object sender, EventArgs e) {
    string strSubTypeList = "";
    switch (DDLType.SelectedValue)
    {
        case "Automobile":
            strSubTypeList = "Car#Motorbike#Scooter";
            break;
        case "Aeroplane":
            strSubTypeList = "Commercial#Private";
            break;
        case "Boat":
            strSubTypeList = "Boat#Jetski";
            break;
    }

    StringBuilder sbSubTypes = new StringBuilder();
    Char delimiter = '#';
    String[] substrings = strSubTypeList.Split(delimiter);
    foreach (var substring in substrings)
    {
        DDLSubType.DataTextField = substring;
        DDLSubType.DataValueField = substring;
        DDLSubType.DataBind();
    } }

Обычно этот тип установки хорошо работает для меня, но единственное отличие на этот раз в том, что он загружен в модал. Когда я делаю выбор из DDL, происходит то, что модальный режим закрывается и вызывает обратную передачу. Это сбрасывает любые значения, которые были затем изменены динамически.

Мое идеальное поведение здесь состоит в том, что, когда выбор сделан на первом DDL, второй DDL обновляется в модальном режиме и не закрывается.

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 25 марта 2019

Я думаю, что вы говорите, что когда я выбираю элемент из выпадающего списка, его соответствующие параметры будут показаны в следующем выпадающем списке.Вам придется использовать jquery ajax (это будет проще).Когда элемент выбирается из раскрывающегося списка, его значение будет передано с помощью ajax, который без обновления вашей страницы получит ваш раскрывающийся список.Например,

<select class="form-control" id="Departments" ><option value="">-Select Department-</option>
    <option value="17">No Department</option>
    <option value="19">Men</option>
    <option value="1018">Danial</option>
    </select>

JavaScript с jquery:

$("#Departments").change(function () {
    var deptId = $(this).select("option:selected").val();

    $.ajax(
    {
        url: "/Categories/M_Level2/" + deptId
    }).done(function (categories) 
{
    $("#category").html(categories);                             
});

В URL-адресе Категории - это контроллер, а M_Level2 - это действие, которое получает значение deptId и на этой основе возвращаем PartialView, а затем добавляем его в # категорию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...