autoBind设置为false时,如何在Kendo UI Grid中隐藏传呼器?

时间:2018-10-23 13:07:31

标签: javascript kendo-ui kendo-grid

我有一个Kendo UI网格,其“自动绑定”属性设置为false。我还将“ pageable.alwaysVisible”属性设置为false,以在不需要网格时隐藏其寻呼机。

我遇到的问题是,因为网格在首次加载时未绑定数据,所以“ alwaysVisible”属性不起作用,并且显示了寻呼机。在此阶段,我希望该寻呼机被隐藏,因为没有要分页的数据。

当网格没有数据绑定时,在第一次加载时我还能隐藏寻呼机吗?

3 个答案:

答案 0 :(得分:1)

当它不知道尚无数据时,它看起来像是一个网格怪胎。也许您可以首先尝试将“无数据”推入数据源?以下代码段演示了您的问题;取消注释最后一行即可解决问题:

<div id="grid"></div>
<script>
    $("#grid").kendoGrid({
        columns: [
            { field: "productName" },
            { field: "category" }
        ],
        dataSource: new kendo.data.DataSource(),
        pageable: {
            pageSize: 5,
            alwaysVisible: false
        },
        autoBind: false,
    });
    //$("#grid").data("kendoGrid").dataSource.data([]);
</script>

此处的示例:https://dojo.telerik.com/OZAXugOt

答案 1 :(得分:1)

它看起来似乎不是开箱即用的,但是您可以使用一些CSS来实现。这可能是比我以前的答案更好的方法,从本质上来说,该答案实际上触发了网格自身进行绑定。最初如何隐藏寻呼机,直到最终绑定网格,此时它将接管寻呼机可见性的管理?

    for (int i = 0; i < oFieldNames.length; i++) {
        oEditText[i] = new EditText(oContext);
        final EditText et = oEditText[i];

        // code for "Date-related" EditText view:
        if (oFieldNames[i].toLowerCase().contains("date") == true) {
            et.setFocusable(false);
            et.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int day = oCalendar.get(Calendar.DAY_OF_MONTH);
                    int month = oCalendar.get(Calendar.MONTH);
                    int year = oCalendar.get(Calendar.YEAR);
                    datePickerDialog = new DatePickerDialog(oContext, new DatePickerDialog.OnDateSetListener(){
                        @Override
                        public void onDateSet(DatePicker datePicker, int iYear, int iMonth, int iDay) {
                            et.setText(iYear + "/" + (iMonth+1) + "/" + iDay);
                        }
                    }, year, month, day);    // ERROR here!!!
                    datePickerDialog.show();
                }
            });
        }
    }

此处的示例:https://dojo.telerik.com/EBaZAjAc

答案 2 :(得分:0)

您可以使用以下内容:

dataBound: function(e){
if(e.sender.dataSource.total() <= e.sender.dataSource.pageSize()){
  e.sender.pager.element.hide();
} else {
  e.sender.pager.element.show();
}

看看这个例子: http://dojo.telerik.com/OhEDo