Ich habe die Cascading-Funktion von Kendo Drop-Down implementiert. Beim Versuch, die Informationen zu speichern, kann ich den Wert der Kombination in meinem Ansichtsmodell nicht ermitteln. Wenn ich das name-Attribut kommentiere, erhalte ich den Wert, aber ich brauche das name-Attribut, damit die kaskadierende Funktion funktioniert. Ich habe eine Problemumgehung mit jquery versucht, um den Modellwert festzulegen, aber Fehler zu erhalten. Könnte mir jemand sagen, wie ich dieses Problem beheben kann?Der Wert des Combos konnte nicht auf das Viewmodel gesetzt werden.
Vertriebsorganisation Combo
<div class="form-group">
@Html.LabelFor(model => model.Company, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
<div class="editor-field">
@(Html.Kendo().ComboBoxFor(model => model.CountryCode)
.Name("SalesOrganisation")
.HtmlAttributes(new { style = "width:100%" })
.DataTextField("CompanyCodeCompany")
.DataValueField("CountryCode")
.Filter("contains")
.MinLength(3)
.DataSource(dataSource => dataSource
.Read(read => read.Action("RequestHeader_SalesOrganisation", "Request").Type(HttpVerbs.Post))
.ServerFiltering(true)
)
)
</div>
@Html.ValidationMessageFor(model => model.Company, "", new { @class = "text-danger" })
</div>
</div>
Verkaufsbüro Combo
<div class="form-group">
@Html.LabelFor(model => model.SalesOffice, htmlAttributes: new { @class = "control-label col-md-4" })
<div class="col-md-6">
<div class="editor-field">
@(Html.Kendo().ComboBoxFor(model => model.SalesOfficeID)
// .Name("SalesOffice")
.HtmlAttributes(new { style = "width:100%" })
.DataTextField("SalesOffice")
.DataValueField("SalesOfficeID")
.AutoBind(false)
.Value("")
.DataSource(dataSource => dataSource
.Read(read =>
{
read.Action("RequestHeader_SalesOffice", "Request")
.Type(HttpVerbs.Post)
.Data("GetFilterOption");
}).ServerFiltering(true)
).CascadeFrom("SalesOrganisation").Filter("contains")
)
</div>
@Html.ValidationMessageFor(model => model.SalesOffice, "", new { @class = "text-danger" })
</div>
</div>
Javascript für die Kaskadierung Funktion arbeiten
function GetFilterOption() {
return {
id: $('#SalesOrganisation').val()
}
}
Javascript - Der Versuch, das Modell zu setzen, die
function GetFilterOption() {
var countryCode = $('#SalesOrganisation').val();
var model = $('#SalesOrganisation').data('kendoComboBox');
model.value = countryCode;
return id = countryCode;
}
Ja, das funktioniert Aber ich habe eine andere Combo, die auf dieser Combo basierte Filter ' Textfeld. Was mache ich dort? Funktion GetFilterOption1() { Rückgabe {ID: $ ('[Name = "SalesOrganisation"]'). Daten ("KendoComboBox"). Text(). Split ('-') [0] } } – Tom
Ich habe die gleiche Zuordnung der Ländercode für die andere Filteroption und es scheint zu funktionieren. Ist das der richtige Weg? – Tom
Ja, Sie müssen auf Ihre Eingaben/Elemente/Widgets mit einem einzigen und konsistenten Namen verweisen. Dies ist der Name Ihres ViewModel-Feldes, wenn Sie die XXXXFor() Rasierklingen verwenden. –