1

私は以下のように3つの剣道ドロップダウンリストを持っています

1)

@(Html.Kendo().DropDownListFor(m => m.ProgrammeID)
.HtmlAttributes(new { data_value_primitive = "true" })
.Name("ProgrammeID") 
.DataTextField("DegreeName") 
.DataValueField("Id") 
.OptionLabel("Select Below...")
        .DataSource(source =>
        {
            source.Read(read =>
            {
                read.Action("GetProgramme", "AptitudeTset").Data("filterProgramme");
            })

            .ServerFiltering(true); 
        })
.SelectedIndex(0)
.CascadeFrom("FacultyID")
)

2)

@(Html.Kendo().DropDownListFor(m => m.SpecializationID)
    .HtmlAttributes(new { data_value_primitive = "true" })
.Name("SpecializationID") 
.DataTextField("SpecializationNameID") 
.DataValueField("SpecializationID") 
.OptionLabel("Select Below...")
        .DataSource(source =>
        {
            source.Read(read =>
            {
                read.Action("GetSpecialization", "Subject").Data("filterSpecialization"); 
            })

            .ServerFiltering(true);
        })
.SelectedIndex(0) 
.CascadeFrom("ProgrammeID")
)

3)

 @(Html.Kendo().DropDownListFor(m => m.SemesterID)

.HtmlAttributes(new { data_value_primitive = "true" })
.OptionLabel("Select Below...")
.Name("SemesterID") 
.DataTextField("SemesterName") 
.DataValueField("SemesterID")
        .DataSource(source =>
        {
            source.Read(read =>
            {
                read.Action("GetSemester", "StudentRSRegistration").Data("loadSemester");
            })  

            .ServerFiltering(true); 
        })
.SelectedIndex(0) 
.CascadeFrom("SpecializationID")    
.CascadeFrom("ProgrammeID"`enter code here`)        
)

ここでは、1 番目と 2 番目の DDL に基づいて 3 番目の DDL をロードします。ただし、2 番目の DDL に値がない場合もあります。空にすることもできます。最初の DDL には常に値があります。私の問題は、2 番目の DDL が null 値の場合、3 番目の DDL がロードされないことです。しかし、私は常に 3 番目の DDL をロードしたいと考えています。SemesterID が Requires であるためです。SemesterID は programmeIDまたはSpecializationIDに依存します。そのため、2 番目の DDl に null 値が含まれる場合があります。

4

1 に答える 1

1

Ajax呼び出しを使用してこの問題を解決しました..以下のように2番目のDDL Cascade Event Handelを使用しました .Events(m=>m.Cascade("cascadesp"))

今私の2番目のDDL

@(Html.Kendo().DropDownListFor(m => m.SpecializationID)

    .HtmlAttributes(new { data_value_primitive = "true" })
    .Name("SpecializationID") 
    .DataTextField("SpecializationNameID") 
    .DataValueField("SpecializationID")
    .OptionLabel("Select Below...")
            .DataSource(source =>
            {

                source.Read(read =>
                {
                    read.Action("GetSpecialization", "Subject").Data("filterSpecialization"); 
                })

                .ServerFiltering(true); 
            })
    .Events(m=>m.Cascade("cascadesp"))
    .SelectedIndex(0)
    .CascadeFrom("ProgrammeID")
)

私のajax呼び出しは

function cascadesp()
{
    getSemesterID($("#ProgrammeID").data("kendoDropDownList").value(),$("#SpecializationID").data("kendoDropDownList").value(),$("#SpecializationLevelID").data("kendoDropDownList").value(),$("#IntakeID").data("kendoDropDownList").value(),$("#intakeYear").val());
}

function getSemesterID(ProgrammeID, SpecializationID, SpecializationLevelID, IntakeID, intakeYear)
{
    var ddl = $('#SemesterID').data("kendoDropDownList");
    var URL = "/StudentRSRegistration/GetSemester/";
    $.ajax({
        url: URL,
        data: JSON.stringify({ ProgrammeID: ProgrammeID, SpecializationID: SpecializationID, SpecializationLevelID: SpecializationLevelID, IntakeID: IntakeID, intakeYear: intakeYear }),
        async: false,
        cache: false,
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            ddl.setDataSource(data);
        }
    });
}

今、私のSemeterID DDLは適切にロードされています

于 2014-09-19T09:07:14.243 に答える