Para un proyecto quise usar el plugin de jQuery para hacer autocomplete
en una caja de texto. Voy a tratar de hacer una fuga de este error.
Achilles: ¿Cómo se empieza?
Tortoise: Tienes que buscar en google por el plugin de jquery
autocomplete, antes estaba con el jquery UI pero ya no más desde que se
convirtió en el jquery 1.7 ahora lo bajas aparte, lo bajas de
aquí
A: ¿Y cómo lo instalo?
T: Descomprimes la carpeta y lo pones en tu carpeta de Scripts en el
HOME de tu app, la tilde ~.
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<link href="../../Scripts/css/ui-lightness/ui.all.css" rel="stylesheet" type="text/css" />
<link href="../../Scripts/jsautocomplete/jquery.autocomplete.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../Scripts/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="../../Scripts/js/jquery-ui-1.5.3.custom.min.js"></script>
<script type="text/javascript" src="../../Scripts/jsautocomplete/jquery.autocomplete.min.js"></script>
A: Ah ok. jojojojojo.
T: Se usa así:
$(function() {
var data = "ThomYorke ThomYorke1 ThomYorke2 ThomYorke3 ThomYorke4 JonnyGreenwood Kamisama PhilSelway ColinGreenwood EdO'Brien ".split(" ");
$("#OwnerIDF").autocomplete(data);
});
A: Llamo el método de autocomplete y ahí le paso los datos del servidor… ¿cómo se hace?
T: (Esto no es una fuga) En tu controlador, en el 2009, tu usaste un controlador para los Tickets, se llamaba TicketsController y ahí defines un método para llamar los datos con javascript, lo encontraste en el internet en alguna parte y no sabes lo que hacen algunas partes pero descubriste que esto funciona, es que no ha salido el libro.
public ActionResult LookupTags(string q, int limit)
{
var db = new AideskDataContext();
var tags = from p in db.Priorities select p.PriorityName;
var retValue = tags
.Where(x => x.StartsWith(q))
.OrderBy(x => x)
.Take(limit)
.Select(r => new { Tag = r });
return Json(retValue);
}
A: Luego aprendo a usar jSON bien.
T: 亀 Ahora tienes que incluir el código de javascript, sino te digo algo te va a salir éste error: “The Controls collection cannot be modified because the control contains code blocks (i.e. ).” El comodín de los errores de ASP.NET cuando no sabe que hacer con javascript. EL CÓDIGO LO INCLUYES DENTRO DEL NO DENTRO DEL . OUT OF THE BODY AND INTO THE HEAD. k-k-k-code:
$(document).ready(function() {
$("#OwnerIDF").autocomplete('<%=Url.Action("LookupTags", "Tickets") %>',
{
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] = { data: data[i], value: data[i].Tag, result: data[i].Tag };
}
return rows;
},
formatItem: function(row, i, max) {
return row.Tag;
},
width: 300,
highlight: false,
multiple: true,
multipleSeparator: ","
});
});
y ya.