2016-12-16 77 views
0

我正在建立一个页面,我需要显示一个datatable。 根据条件,此表应显示5列或6列。如何隐藏数据表中的特定列?

这是我在.js文件代码与6列显示表:

if(Display) 
{ 
    myself.set_DataTable(myself._findjcontrol("tTable1"));  
    myself.get_DataTable().dataTable(
    { 
     "sDom": '<"top">rt<"bottom"flp><"clear">', 
     "aoColumns": [ 
      { "sType": "string" }, //Column1 
      {"sType": "string" }, //Column2 
      {"sType": "string" }, //Column3 
      {"sType": "string" }, //Column4 
      {"sType": "string" }, //Column5 
      {"sType": "html"} //Column6 
     ], 
     "bPaginate": false, 
     "bAutoWidth": false, 
     "bJQueryUI": false, 
     "bFilter": false, 
     "bPage": false, 
     "bSort": false, 
     "binfo": false, 
     "bSortClasses": false 
    }); 
} 
else 
{ 
    myself.set_DataTable(myself._findjcontrol("tTable_2")); 
    myself.get_DataTable().dataTable(
    { 
     "sDom": '<"top">rt<"bottom"flp><"clear">', 
     "aoColumns": [ 
      { "sType": "string" }, //Column1 
      {"sType": "string" }, //Column2 
      {"sType": "string" }, //Column3 
      {"sType": "string" }, //Column4 
      {"sType": "string" } //Column5 
     ], 
     "bPaginate": false, 
     "bAutoWidth": false, 
     "bJQueryUI": false, 
     "bFilter": false, 
     "bPage": false, 
     "bSort": false, 
     "binfo": false, 
     "bSortClasses": false 
    }); 
} 

基于条件,我重复代码的两倍。有没有办法为列定义某种属性,因此,根据条件,我更改该属性并将其附加到列定义。这样的事情:

var isDisplay = false; 
if(Display) 
{ 
    isDisplay = true; 
} 
else 
{ 
    isDisplay = false; 
} 

    /* the rest of code */ 

    {"sType": "string", isDisplay } //Column5 

/* the rest of code */ 

是否有可能做这样的事情?

回答

0

如果我理解正确的,你需要什么,你可以不重复的代码分离变量的设置:

var control = "tTable_2" 
    , columns = [ 
      { "sType": "string" }, //Column1 
      {"sType": "string" }, //Column2 
      {"sType": "string" }, //Column3 
      {"sType": "string" }, //Column4 
      {"sType": "string" } //Column5 
      ]; 
if(Display) 
{ 
    columns.push({"sType": "html"}); //Column6 
    control = "tTable_1"; 
} 


myself.set_DataTable(myself._findjcontrol(control)); 
myself.get_DataTable().dataTable(
{ 
    "sDom": '<"top">rt<"bottom"flp><"clear">', 
    "aoColumns": columns, 
    "bPaginate": false, 
    "bAutoWidth": false, 
    "bJQueryUI": false, 
    "bFilter": false, 
    "bPage": false, 
    "bSort": false, 
    "binfo": false, 
    "bSortClasses": false 
}); 

而且,它似乎有一个在数据表中的feature,可以帮助你。尝试使用属性bVisible在你想隐藏/显示列:

myself.set_DataTable(myself._findjcontrol("tTable1"));  
myself.get_DataTable().dataTable(
{ 
    "sDom": '<"top">rt<"bottom"flp><"clear">', 
    "aoColumns": [ 
     { "sType": "string" }, //Column1 
     {"sType": "string" }, //Column2 
     {"sType": "string" }, //Column3 
     {"sType": "string" }, //Column4 
     {"sType": "string" }, //Column5 
     {"sType": "html", "bVisible": Display} //Column6 
    ], 
    "bPaginate": false, 
    "bAutoWidth": false, 
    "bJQueryUI": false, 
    "bFilter": false, 
    "bPage": false, 
    "bSort": false, 
    "binfo": false, 
    "bSortClasses": false 
}); 

希望它能帮助。