根据数据隐藏bootstrap行列

时间:2016-03-26 13:13:36

标签: twitter-bootstrap-3 kendo-grid

我正在运行一个jquery kendo网格行模板,其中我显示了一些带有images的内容。下面是代码:



 <table id="grid" style="width:100%">
                <colgroup>
                    <col class="photo" />
                    <col class="details" />
                    <col />
                </colgroup>
                <thead style="display:none">
                    <tr>

                        <th>
                            Details
                        </th>

                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td colspan="3"></td>
                    </tr>
                </tbody>
            </table>
            <script id="rowTemplate" type="text/x-kendo-tmpl">
                <tr>
                    <td style="width:30%">
                     div class="row">
                            <div id="dvImage" class="col-sm-4" style="width:118px">
                                #= imagelink #
                            </div>
                            <div class="col-sm-8" style="width:400px">
                                <span class="name" style="font-size:14px; color:green">#: Link #</span>
                               
                            </div>
                        </div>
                    </td>
                </tr>
            </script>
            <style>
                .name {
                    display: block;
                    font-size: 1.3em;
                }

                .k-grid-header .k-header {
                    padding: 0px 20px;
                }

                .k-grid-content {
                    overflow-y: auto;
                }

                .k-grid tr td {
                    background: white !important;
                    border: 0 !important;
                    border-color: transparent;
                }

                .k pager-wrap {
                    border-width: 1px !important;
                    border-color: #ccc;
                }

                .k-block, .k-widget, .k-input, .k-textbox, .k-group, .k-content, .k-header, .k-filter-row > th, .k-editable-area, .k-separator, .k-colorpicker .k-i-arrow-s, .k-textbox > input, .k-autocomplete, .k-dropdown-wrap, .k-toolbar, .k-group-footer td, .k-grid-footer, .k-footer-template td, .k-state-default, .k-state-default .k-select, .k-state-disabled, .k-grid-header, .k-grid-header-wrap, .k-grid-header-locked, .k-grid-footer-locked, .k-grid-content-locked, .k-grid td, .k-grid td.k-state-selected, .k-grid-footer-wrap, .k-pager-wrap, .k-pager-wrap .k-link, .k-pager-refresh, .k-grouping-header, .k-grouping-header .k-group-indicator, .k-panelbar > .k-item > .k-link, .k-panel > .k-item > .k-link, .k-panelbar .k-panel, .k-panelbar .k-content, .k-treemap-tile, .k-calendar th, .k-slider-track, .k-splitbar, .k-dropzone-active, .k-tiles, .k-toolbar, .k-tooltip, .k-button-group .k-tool, .k-upload-files {
                    border-color: transparent;
                }
                .col-md-2 {
                    width:118px
                }
                .col-md-3 {
                    width:25%
                }

            </style>
&#13;
&#13;
&#13;

在上面的代码中,我有我正在展示的图像和描述,但对于某些行,我没有图像,但它仍然包含空间。所以在这里我需要的是,如果图像对于特定行为空,那么它应该隐藏该图像列。我试过这样但没有运气。 以下是代码:

&#13;
&#13;
 $("#grid").kendoGrid({
            autoBind: false,
            dataSource: {
                transport: {
                    read: {
                        url: "/Home/GetSearchData",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        data: { searchTerm: $('[id*=hdnHomeSearch]').val() }
                    },
                    parameterMap: function (data, operation) {
                        return kendo.stringify(data);
                    }
                },
                pageSize: 10,
                schema: {
                    parse: function (data) {
                        debugger;
                        var items = [];
                        var chkCorrectVal = 0;
                        var context = $('#dvImage');
                        for (var i = 0; i < data.data.length; i++) {
                            if (data.data[i].CorrectValue != null && data.data[i].SearchValue != null) {
                                $("#spnSR")[i].innerHTML = "<b>" + "Get results for this text: " + "</b>" + data.data[i].CorrectValue;
                                $("#spnSV")[i].innerHTML = "<b>" + "Searched for this text: " + "</b>" + data.data[i].SearchValue;
                                chkCorrectVal = 1;
                            }
                            else {
                                if (chkCorrectVal == 0) {
                                    $("#spnSR").hide();
                                    $("#spnSV").hide();
                                }
                            }
                            if (!data.data[i].imagelink) {
                                var getContext = $(context[i]);
                                data.data[i].imagelink = "";
                                $(context[i]).addClass('hidden');
                            }
                           
                        }
                        var product = {
                            
                            data: data.data,
                            total: data.total
                        };
                        items.push(product);
                        return (items[0].data);
                    },

                }
            },
            dataBound: function () {
                DisplayNoResultFound($("#grid"));
            },
            serverPaging: true,

            pageable: {
                refresh: true,
                pageSizes: true
            },
            rowTemplate: kendo.template($("#rowTemplate").html()),
        });
    });
&#13;
&#13;
&#13;

我在这里粘贴的另一个例子是我试图得到相同的结果,这对我来说很好。 以下是代码:

&#13;
&#13;
           <input type="submit" id="soltitle" value="#1"/>
             
            <div class="row">
                <div class="col-md-2" id="hell1">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title"></h4>
                        </div>
                        <div id="timeline1" class="panel-collapse collapse">
                            <div class="panel-body">
                                <a href="#" class="thumbnail">
                                    <img class="img-responsive" src="http://placehold.it/250x160" alt="Thumb11" />
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title"></h4>
                        </div>
                        <div id="timeline1" class="panel-collapse collapse">
                            <div class="panel-body">
                                <a href="#" class="thumbnail">
                                    <img class="img-responsive" src="http://placehold.it/250x160" alt="Thumb11" />
                                </a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

<script type="text/javascript">
    $(document).ready(function () {
       
        $('#soltitle').click(function () {
          
            $('#hell1')
                // Find parent with the class that starts with "col-md"
                // Change class to "col-md-3"
                .closest('[class^="col-md"]')
                    .toggleClass('col-md-2 col-md-2 hidden')
                // Find siblings of parent with similar class criteria
                // - if all siblings are the same, you can use ".siblings()"
                // Change class to "col-md-2"
                //.siblings('[class^="col-md"]')
                //    .removeClass('col-md-3')
                //    .addClass('col-md-2');
        });
    });
</script>
&#13;
&#13;
&#13;

在这个例子中,我隐藏了按钮点击事件中的第一列,并且工作正常。

1 个答案:

答案 0 :(得分:0)

问题是您为图像不存在的所有行切换类。每次切换它们并再次切换时,第二个切换将取消第一个切换。如果if被评估为true的行是pair,那么最后一个toggle就是否定。

如果您找到一个这样的行,或者您需要专门为受影响的行隐藏列,则不清楚是否需要隐藏整列。另外,你的if不正确。

如果你想隐藏整个列,如果至少存在这样的行,那么这可能是解决方案:

var shouldShow = true;
 for (var i = 0; shouldShow && (i < data.data.length); i++) {

                            if (!data.data[i].imagelink) {
                                $(".imageClass").addClass('hidden');
                                shouldShow = false;
                            }

                        }

如果您只想为受影响的行执行此操作,则此类内容可能会对您有所帮助:

 var context = $(".imageClass");
 for (var i = 0; i < data.data.length; i++) {

                            if (!data.data[i].imagelink) {
                                $(context[i]).addClass('hidden');
                            }

                        }

代码假设您有一个包含imageClass的列。

修改

事实证明.hidden类没有定义。有两种可能的解决方案,您可以选择其中任何一种。

解决方案1:将.addClass("hidden")替换为.hide()

解决方案2:将以下规则添加到CSS代码中:.hidden {display: none;}