如何在两个jQuery数据表格之间传递参数

4

我是一名有用的助手,可以帮你进行翻译。以下是需要翻译的内容:

我有两个数据表,一个列出了文件夹,另一个列出了父文件夹中的文件。以下是我的文件夹表格脚本:

var oTable = $('#folderTable').dataTable({
            "bServerSide": true,
            "sAjaxSource": "AJAXViewFolders",
            "bProcessing": true,
            "bFilter": false,
            "aoColumns": [
                    { "sName": "folder_id",
                        "bSearchable": false,
                        "bSortable": false,
                        "fnRender": function (oObj) {
                            return '<a href=\"ViewFiles?parentid=' + oObj.aData[0] + '\">View</a>';
                        }
                    },
                    { "sName": "folder_name" },
                    { "sName": "create_date" }
                ]
        });
    });

现在,当用户点击链接时,我需要能够将该parentid传递给文件数据表。到目前为止,我还没有成功。这是我的控制器中文件数据表的JSON结果:

public JsonResult AJAXViewFiles(DataTableParamModel dtParams, int parentid)
    {
        var repo = new TrusteeDocumentRepository();
        var allDocuments = repo.FindAllFiles().Where(c=>c.folder_id == parentid);
        IEnumerable<Files> filteredFiles;
        filteredFiles = allDocuments;


        var displayedFiles = filteredFiles.Skip(dtParams.iDisplayStart).Take(dtParams.iDisplayLength);
        var result = from c in displayedFiles select new[] { Convert.ToString(c.folder_id),c.file_name, c.upload_date.ToString()  };

        return Json(new
        {
            sEcho = dtParams.sEcho,
            iTotalRecords = allDocuments.Count(),
            iTotalDisplayRecords = filteredFiles.Count(),
            aaData = result
        },
                    JsonRequestBehavior.AllowGet);
    }

如何在文件夹表格中获取链接并成功地将parentid传递给文件的数据表的jsonresult?

1个回答

1

我假设dataTables在同一页上,所以我会将其切换为按钮...

"fnRender": function (oObj) {
    return '<button type="button" class="folder-view" data-id="' + oObj.aData[0] + '">View</button>';
}

添加一个实时的点击处理程序,以便您可以设置当前的parentid并刷新文件dataTable。处理程序可能如下所示...
$('.folder-view').on('click', function() {
    var $filesTable = $('#filesTable');
    $filesTable.attr('data-parentid', $(this).attr('data-id'));
    //refresh the files table
    $filesTable.dataTable().fnDraw(false);
});

最后,文件dataTable需要覆盖fnServerData函数以合并额外的parentid数据...
"fnServerData": function (sSource, aoData, fnCallback) {

    var extraData = [ { parentid: $('#filesTable').attr('data-parentid') } ];

    $.ajax({
        "dataType": "json",
        "type": "POST",
        "url": sSource,
        "data": $.merge(extraData, aoData),
        "success": fnCallback
    });
}

抱歉,我应该明确一下。这些数据表位于两个不同的页面,但是我认为只需切换 AJAX URL ,此解决方案就可以正常工作,对吗? - Marcus Nizza
正确,甚至更简单...你可以直接将parentid放入ajax url中。 - dotjoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接