datatablesのフィルターに要素のリストを表示しようとすると問題が発生します。
私はこのチュートリアルに従い、データテーブルでフィルタリング レコードを作成しようとしました。
コントローラーでリストを返す次のコードがあります。
public JsonResult grupMonedas()
{
IList<MONEDA> temp = (from c in db.MONEDA
select c).ToList();
var result = from c in temp
select new String[] { c.NOMBREMONEDA };
return Json(result);
}
これは、データ テーブルとフィルターを作成するための私の JavaScript です。
$(document).ready(function () {
//Nombre en la tabla donde se ejecutara
var oCuentas = $('#tablaCuentas').dataTable({
//Es el que emplementa para trabajar con la pagina
"bServerSide": true,
//Metodo el qual se ejecutara
"sAjaxSource": "Cuentas/CargarCuentas",
//Mensaje cargado
"bProcessing": true,
"bJQueryUI": true,
//Columnas que cargara
"aoColumns": [
//Las columnas tienen que coincidir con la base de datos
{"sName": "NUMCUENTA" }, { "sName": "NOMBRECUENTA" }, { "sName": "SALDO" }, { "sName": "Moneda" }
],
//Mostrar Diferentes opciones
"bPaginate": true,
"bLengthChange": true,
"bFilter": true,
"bSort": true,
"bInfo": true,
"bAutoWidth": true
}).columnFilter({
"aoColumns": [
{ sSelector: "#numeroFiltro", type: "number" },
{ sSelector: "#nombreFiltro", type: "text" },
{ sSelector: "#saldoFiltro", type: "number-range" },
{ sSelector: "#monedaFiltro", type: "select", values: grupMonedas() }
]
});
});
function validateJSON(x) {
var orig = x;
var stgify = JSON.stringify(orig);
var splitchar = ['\\"', '\',\'', '[', ']', '\"'];
var joinchar = ['\'', '\':\'', '', '', ''];
for (i = 0; i < 5; i++) {
stgify = stgify.split(splitchar[i]);
tmp = stgify.join(joinchar[i]);
stgify = tmp;
}
stgify = "[" + stgify + "]";
var finalEdit = stgify;
//alert(finalEdit); <- returns a ok list of elements :S
return finalEdit;
}
function grupMonedas() {
$.post('Cuentas/grupMonedas', {},
function (data) {
grupMonedas = validateJSON(data);
},
'json/javascript'
);
return grupMonedas;
}
しかし、select "Moneda" のフィルターでは、"title" を入力するだけで、リストに作成された要素はありません。
前もって感謝します。
PS: 私の英語でごめんなさい