2016-06-14 66 views
0

我有四個實體,讓我們說A,B,C,D是相互關聯的(B依賴於A,C依賴於B,D依賴於C)。我想在一個表格中顯示所有信息,可以輕鬆搜索和過濾。jQuery Datatable使每個單元格鏈接

所以我創建的窗體的視圖模型:

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;} 
} 

我想表有四列顯示每個實體的名稱和小區中的每個數據是通向細節的超鏈接所選實體的頁面(實體C除外)。

這裏是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>"; 
      }, 
     }, 
    ] 
}); 

但抱怨

請求的未知參數0 0行有關 此錯誤的詳細信息,請參閱http://datatables.net/tn/4

數據爲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.] 

我該怎麼說:return "<a href=" + link + "'>" + name + "</a>";每個細胞?

回答

1

row[1]意味着一個數組索引或對象屬性名稱'1',但你沒有。

你需要的東西,如:

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

我剝你的代碼到最小,並得到了同樣的錯誤,直到我改變了你columndefs到列,而不是:

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>"; } } 
     ] 
0

我設法做到這一點結合兩個答案:

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>"; } }, 
    ]