如何通过DataTable AjaxSource传递参数?

时间:2016-04-02 03:09:44

标签: c# jquery sql-server datatable

我们试图通过从Sql服务器提取数据来填充JQuery DataTable。 到目前为止,我能够在没有参数的情况下调用C#函数,但是当我尝试传递参数时,方法调用失败说“val.fn.apply不是函数”。如何将参数传递给C#函数?

这是用于创建数据表的Jquery函数。如上所述,它可以在没有参数(staffId)的情况下工作,但是使用fnServerParams属性失败。

    function getData(staffId) {
    $('#gridStaffDetails').dataTable({
        processing: true,
        ajaxSource: '@Url.Action("GetStaffPositions", "UserAccount")',
        fnServerParams: staffId,
        destroy: true,
        paging: false,
        filter: false,
        autoWidth: false,
        sort: false
    });
};

这是对Javascript函数的调用。它在一个循环中。

<a href="#" onclick="getData('@(item.StaffID)')" style="cursor: pointer;">Select</a>

这是C#ActionResult方法。

        [HttpGet]
    public ActionResult GetStaffPositions(int staffId)
    {
        try
        {
            // get staff positions for the given staffId from new view
            List<StaffPositionsTitleView> staffPositionsTitleViewList  = _service.GetStaffPositionsTitleViewList(staffId);
            List<StaffPosition> staffPositionList = new List<StaffPosition>();

            // map new view to List<StaffPosition>
            staffPositionList = AutoMapper.Mapper.Map<List<StaffPositionsTitleView>, List<StaffPosition>>(staffPositionsTitleViewList);

            return Json(new
            {
                data = staffPositionList.Select(x => new object[] { x.StaffId, x.Title })
            }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

1 个答案:

答案 0 :(得分:0)

找到我的答案。将此fnServerParams: staffId,更改为此

fnServerParams: function (d) { d.push( { "name": "StaffId", "value": staffId } ) },