Ich verwende das jqAutocomplete-Plugin, das ich in einer Reihe einer Tabelle verwenden möchte.Verwenden von jqAutocomplete in einem Array
Ich kann es nicht zum Laufen bringen. Die Autovervollständigungs-Auswahlbeschriftungen werden nicht angezeigt. Es erlaubt mir nur 1 Buchstaben einzugeben.
Ich verwende Knockout-Mapping, um serverseitige Viewmodels zu clientseitigen Viewmodels zuzuordnen.
Die Seite wird in Ordnung wiedergegeben. Für ein neues Formular - wie in diesem Fall - erzeugt der Code 10 leere Zeilen (nicht anzeigen). Ich möchte die automatische Vervollständigung verwenden, um einen Vertrag aus einer Liste für die JobName-Spalte auszuwählen.
Ich habe hier die Viewmodals kopiert, reduziert um es einfacher zu machen;
Eltern Viewmodel:
public class WholeViewModel : BaseViewModel
{
public WholeViewModel(int employeeId, string name;)
: base()
{
this.Lines = new List<LineViewModel>();
this.Contracts = SessionObjectsSTAS.GetContracts().Select(x => new ContractViewModel { ContractId = x.ContractId, JobName = x.JobName, Label = x.ToString() }).ToList();
this.EmployeeId = employeeId;
this.Name = name;
}
public int EmployeeId { get; set; }
public string Name { get; set; }
public List<ContractViewModel> Contracts { get; set; }
}
Die Linien Sammlung aus dieser viewmodal gemacht wird:
public class LineViewModel
{
public LineViewModel()
{
}
public LineViewModel(int key)
: this()
{
this.Id = key;
this.JobName = string.Empty;
this.Description = string.Empty;
}
public int Id { get; set; }
public int? ContractId { get; set; }
public string JobName { get; set; }
public string Description { get; set; }
}
The ContractViewModel:
public class ContractViewModel
{
public int ContractId { get; set; }
public string JobName { get; set; }
public string Label { get; set; }
}
So meiner javascript:
var lineMapping = {
'Lines': {
key: function (line) {
return ko.unwrap(line.Id);
},
create: function (options) {
return new LineViewModel(options.data);
}
}
};
LineViewModel = function (data) {
var self = this;
ko.mapping.fromJS(data, lineMapping, self);
};
WholeViewModel = function (data) {
var self = this;
ko.mapping.fromJS(data, lineMapping, self);
};
und meine ASP.Net Razor Seite:
@using Newtonsoft.Json
@model ViewModel.WholeViewModel
@{
var data = JsonConvert.SerializeObject(Model);
}
<table class="table">
<tbody data-bind="foreach: Lines">
<tr>
<td>
<input type="text"
data-bind="jqAuto: { source: $parent.Contracts, value: JobName, labelProp: 'Label', inputProp: 'Label', valueProp: 'ContractId' }" />
</td>
<td>
<input type="text" data-bind="value: Description" />
</td>
</tr>
</tbody>
</table>
@section scripts
{
@Scripts.Render("~/bundles/BootstrapJs")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/inputmask")
@Scripts.Render("~/bundles/Knockout")
<script type="text/javascript">
var wholeViewModel = new WholeViewModel(@Html.Raw(data));
ko.applyBindings(wholeViewModel);
</script>
}
Wenn ich einen Haltepunkt in Visual Studio gesetzt, die LineViewModel sieht wie folgt aus;
Was ist der Fehler, den Sie bekommen? – vijayst
Die Autocomplete-Labels werden nicht angezeigt. Es erlaubt mir nur 1 Buchstaben einzugeben. – arame3333
Alles auf der Konsole? – vijayst