简体   繁体   English

jQuery Datatable使每个单元格成为一个链接

[英]jQuery Datatable make each cell a link

I have four entities, let's say A,B,C,D which are interconnected (B depends on A, C depends on B, D depends on C). 我有四个相互关联的实体,比如A,B,C,D(B取决于A,C取决于B,D取决于C)。 I want to display all the information in one table that can be easily searched and filtered. 我想将所有信息显示在一个可以轻松搜索和过滤的表中。

So I created a view model of form: 因此,我创建了一个表单的视图模型:

public class MyViewModel {
    public Aname {get; set;}
    public Alink {get; set;}
    public Bname {get; set;}
    public Blink {get; set;}
    public Cname {get; set;}
    public Dname {get; set;}
    public Dlink {get; set;}
}

I want the table to have four columns to display the name of each entity and each data in a cell to be a hyperlink that leads to the details page of the selected entity (except entity C). 我希望该表具有四列,以显示每个实体的名称以及单元格中的每个数据是一个超链接,该超链接会导致所选实体(实体C除外)的详细信息页面。

Here is the javascript 这是javascript

$('#myDataTable').DataTable({
    'bDestroy': true,
    "bInfo": true,
    "bProcessing": true,
    "bDeferRender": true,
    'iDisplayLength': 10,
    'sPaginationType': 'full_numbers',
    'sPageButtonActive': "paginate_active",
    'sPageButtonStaticDisabled': "paginate_button",
    'data': OptionsHandler.Data,
    "columnDefs": [
        {
            "render": function (data, type, row) {
                return "<a href=" + row[1] + "'>" + row[0] + "</a>";
            },
        },
    ]
});

But it complains that 但它抱怨

Requested unknown parameter 0 for row 0. For more information about this error, please see http://datatables.net/tn/4 请求第0行的未知参数0。有关此错误的更多信息,请参见http://datatables.net/tn/4

Data is in Json format: 数据采用Json格式:

data = [
       {"Aname":"PatriceBoyle",
        "Alink":"/A/Details/00014",
        "Bname":"Software Engineering",
        "Blink":"/B/Details/2",
        "Cname":"info",
        "Dname":"Database Design",
        "Dlink":"/D/Details/1"
       }, etc.]

How can I say: return "<a href=" + link + "'>" + name + "</a>"; 我怎么说: return "<a href=" + link + "'>" + name + "</a>"; for each cell? 每个细胞?

row[1] implies either an array index or object property name of '1' but you have neither. row[1]表示数组索引或对象属性名称为'1'但您都没有。

You need something like: 您需要类似:

return "<a href=" + row.Alink + "'>" + row.Aname + "</a>";

I stripped your code down to the minimum and got the same error until I changed you columndefs to columns instead: 我将您的代码精简到最低限度,并得到了相同的错误,直到我将columndefs更改为columns:

columns: [
            { title: "Aname", data: "Aname", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[0] + "</a>"; } },
            { title: "Alink", data: "Alink", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[1] + "</a>"; } },
            { title: "Bname", data: "Bname", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[2] + "</a>"; } },
            { title: "Blink", data: "Blink", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[3] + "</a>"; } },
            { title: "Cname", data: "Cname", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[4] + "</a>"; } },
            { title: "Dname", data: "Dname", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[5] + "</a>"; } },
            { title: "Dlink", data: "Dlink", render: function (data, type, row) { return "<a href=" + row[1] + "'>" + row[6] + "</a>"; } }
        ]

I managed to do it combining the two answers: 我设法结合了两个答案:

columns: [
        { title: "Column A", data: "Aname", render: function (data, type, row) { return "<a href=" + row.Alink + "'>" + row.Aname + "</a>"; } },
        { title: "Column B", data: "Bname", render: function (data, type, row) { return "<a href=" + row.Blink + "'>" + row.Bname + "</a>"; } },
        { title: "Column C", data: "Cname", render: function (data, type, row) { return "<a href=" + row.Clink + "'>" + row.Cname + "</a>"; } },
        { title: "Column D", data: "Dname", render: function (data, type, row) { return "<a href=" + row.Dlink + "'>" + row.Dname + "</a>"; } },
    ]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM