jQuery数据表可自定义列(asp.net usercontrol)

时间:2015-10-08 18:10:55

标签: asp.net user-controls datatables

net webforms application。

在我的.aspx页面中我使用jQuery数据表并使用ajax获取数据。

在我的jQuery数据表中,我有一些用于设置列的配置:

'columnDefs': [{
                        'targets': 0,
                        'searchable': false,
                        'orderable': false,
                        'className': 'dt-body-center',
                        'render': function(data, type, full, meta) {
                            //return '<input type="checkbox">';
                            if (data == "false") {
                                return '<input type="checkbox" class="styled green">';
                            } else {
                                return '<input type="checkbox" class="styled green" checked="' + data + '">';
                            }

                        }
                    }],

我需要将此jQuery数据表移动到usercontrol,以便它可以在Web应用程序的其他部分重用,但我应该能够让控件知道要隐藏哪些列。

我正在考虑从服务器发送我的json中的其他属性,一个名为HideCols的数组,其中包含我想要隐藏的列的索引,然后使用jQuery一些代码来隐藏它们。

我得到的表数据如下:

"fnServerData": function(sSource, aoData, fnCallback) {

                        aoData.push(
                                { name: "filter", value: filterVal }
                                );

                        $.ajax({
                            "dataType": 'json',
                            "contentType": "application/json; charset=utf-8",
                            "type": "GET",
                            "url": sSource,
                            "data": aoData,
                            "success": function(msg) {


                                // here I get my json table data from server

                                var json = jQuery.parseJSON(msg.d);
                                fnCallback(json);

                                // here I can do my jQuery code to hide columns
                                if(json.HideCols != null)
                                {
                                }

                             }
                          });
                    }

如果我可以从服务器发送columnDefs配置,那么其他方式会很棒,但我想它会更棘手。

  

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

我已经使用jqGrid实现了动态columnDefs(colModel)功能。您可以在此处阅读帖子jqgrid-dynamic-reading-of-colmodel-and-colnames-from-codebehind-of-aspx

您可以从代码隐藏中获得生成动态columnDefs(上面的帖子中的xxx_colModel)和ajaxData(上面的帖子中的xxx_Data)的基本思想,并以您的方式实现它。设置要在动态生成的columnDefs中隐藏的列的属性。

关于隐藏列的方法:

  

我正在考虑从服务器发送我的json中的其他属性,一个名为HideCols的数组,其中包含我要隐藏的列的索引,然后使用jQuery一些代码来隐藏它们。

您可以将另一个属性添加到顶级JSON以及xxx_colModel和xxx_Data说xxx_HiddenCols并存储csv列ID,例如2,8,9
然后在客户端,在网格初始化之后,您可以使用for循环来处理每个列以隐藏,例如。

var colArray = xxx_HiddenCols.split(',');

for (var i = 0; i < colArray.length; i++) {
    table.column( colArray[i] ).visible( false );
}