0

我下载了 Jquery 数据表和 Jquery DataTable.Filter 插件。

这是我正在处理的代码。

var oTable = $('#myDataTable').dataTable({
        "bServerSide": true,
        "sAjaxSource": "/User/DataProviderAction",
        "bJQueryUI": true
    });

    oTable.columnFilter({ sPlaceHolder: "head:before",
        aoColumns: [{ type: "select", values: ["Box Office", "Concessions"] },
                    { type: "select",values: ["Administrator","Sales People"]},
                    {type: "text"}

                    ]
    });

问题:我将如何让它从数据库中加载值,而不是硬编码 aoColumns 中的值。我正在使用 MVC。如果有帮助,我确实在我的存储库中设置了返回字符串值的方法。

4

1 回答 1

2

您可以通过执行 jquery ajax 调用然后将 Javascript 变量设置为可在数据表中使用的响应值,从控制器中检索数据库值。我在下面有一个伪示例。你的控制器会返回一个 Json 响应,它可能是一个模型:

YourModel model = new YourModel();
model.DBList1 = SomeValue;
model.DBList2 = SomeOtherValue;
return Json(model); // Use return Json(model, JsonRequestBehavior.DenyGet); if you want to limit access to post only.

如果您从 ajax 调用执行 Post,请记住在 Controller Action 中包含 [HttpPost] 属性。

$(document).ready(function () {

var List1;
var List2;

$.ajax({
    type: "POST",
    url: "Controller URL",
    contentType: "application/json; charset=utf-8",
    ...
    ...
    success: function(response) {
    List1 = response.DBList1;
    List2 = response.DBList2;
    }
});


var oTable = $('#myDataTable').dataTable({ 
    "bServerSide": true, 
    "sAjaxSource": "/User/DataProviderAction", 
    "bJQueryUI": true 
    }); 

    oTable.columnFilter({ sPlaceHolder: "head:before", 
    aoColumns: [{ type: "select", values: List1 }, 
                { type: "select",values: List2 }, 
                {type: "text"} 

                ] 
    }); 

});
于 2012-10-11T08:11:20.697 回答