【问题标题】:How to place select element and toggle button to free jqgrid toolbar如何放置选择元素和切换按钮以释放 jqgrid 工具栏
【发布时间】:2015-03-10 19:31:50
【问题描述】:

如果使用字体真棒图标集,我正在寻找一种方法来放置选择元素和切换按钮以释放 jqgrid 顶部工具栏。 我尝试了在 4.6 中工作的代码:

    var i,
        selectElem= '<select tabindex="-1" id="_layout">';

    for (i=0; i<10; i++) {
        selectElem += '<option value="'+i+'" ';
        if (i==layout)
            selectElem += ' selected';
        selectElem += '>Form ' + i + '</option>'
    }

    $("#grid_toppager_left table.navtable tbody tr").append(
           '<td class="ui-pg-button ui-corner-all">' +
           '<div class="ui-pg-div my-nav-checkbox">' +
           selectElem +
           '</select>' +
           '</div></td>'
           );

但是选择元素没有出现。

我试过的切换按钮

    $("#grid_toppager_left table.navtable tbody tr").append(
           '<td class="ui-pg-button ui-corner-all">' +
               '<div class="ui-pg-div my-nav-checkbox">' +
               '<input tabindex="-1" type="checkbox" id="AutoEdit" ' + (autoedit ? 'checked ' : '')+'/>' +
               '<label ' +' for="AutoEdit">Toggle</label></div></td>'
                      );
    $("#AutoEdit").button({
        text: false,
        icons: {primary: "fa-star"}
    }).click(function () {
            autoedit = !autoedit;
        }
    });

但切换按钮也不会出现在工具栏中。 如何强制这些元素出现?

【问题讨论】:

  • 我写了 UPDATED 部分与问题的替代解决方案。

标签: javascript jquery css jqgrid free-jqgrid


【解决方案1】:

您应该更改,因为.navtable 现在不是表格。有关详细信息,请参阅the wiki article。所以代码应该是这样的:

$("#grid_toppager_left .navtable").append(
 '<div class="ui-pg-button ui-corner-all">' +
     '<div class="ui-pg-div my-nav-checkbox">' +
     '<input tabindex="-1" type="checkbox" id="AutoEdit" ' + (autoedit ? 'checked ' : '')+'/>' +
     '<label ' +' for="AutoEdit">Toggle</label></div></div>'
            );
$("#AutoEdit").button({
    text: false,
    icons: {primary: "fa fa-lg fa-fw fa-star"}
}).click(function () {
        autoedit = !autoedit;
    }
);
var $label = $("#AutoEdit").next("label");
$label.children(".ui-button-icon-primary").removeClass("ui-icon");
$label.find(".ui-button-text").hide();

此外,我还添加了小的 CSS 修复

.my-nav-checkbox > .ui-button-icon-only { margin-top: 5px; }
.my-nav-checkbox > .ui-button-icon-only > .ui-button-icon-primary.fa { margin-left: 6px; }
.my-nav-checkbox:hover  { margin: 1px;  }

The demo 显示结果:

更新:我想更多关于你的问题,我可以建议更好的解决同样的问题。我认为根本不使用jQuery UI Button 会更容易。而不是可以通过切换ui-state-active 类将按钮标记为“已选中”。所以我建议添加CSS规则

.ui-jqgrid .ui-pg-table .ui-pg-button.ui-state-active { margin: 1px; }

首先。使用navButtonAdd方法可以实现选中按钮:

var autoedit = false;
$grid.jqGrid("navButtonAdd", "#grid_toppager", {
    buttonicon: "fa-star",
    caption: "",
    id: "AutoEdit",
    title: "Toggle autoedit",
    onClickButton: function (options, e) {
        autoedit = !autoedit;
        //$("#"+options.id)[autoedit ? "addClass" : "removeClass"]("ui-state-active");
        $(e.currentTarget)[autoedit ? "addClass" : "removeClass"]("ui-state-active");
    }
});

The corresponding demo 似乎没有任何副作用并且非常简单。 “已选中”按钮的显示结果如下图所示:

【讨论】:

  • 谢谢。伟大的。如何以类似的方式将选择元素放置到工具栏?问题包含创建 10 个元素的代码,这些元素可以是带标题的数字按钮 1..10 此方法可以扩展为创建可以具有值 1..10 的按钮,如引导组合按钮吗?还是应该像之前一样使用用于创建选择的丑陋标记字符串 append() ?
  • 在更新的答案中,如果代码更改为 var autoedit = true; 按钮最初处于未选中状态。如何将按钮最初置于选中状态?在这种情况下,以前的答案显示按钮最初处于选中状态
  • @Andrus:创建选中按钮的最简单方法是使用id: "AutoEdit",并在调用navButtonAdd 之后直接添加$("#AutoEdit").click();。见the demo
  • @Andrus:带有选择元素的问题似乎是新问题。您能否单独制定并详细描述:选择的输入数据应该如何?例如,是否有使用 jQuery UI 的接近示例?您是否可能只需要包含在单击按钮时创建上下文菜单的按钮?
  • @Andrus:我测试了案例iconsOverText: true。需要另外设置font-weight: normal;。见the demo。在我的 100% 或 200% 缩放测试中,它没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
相关资源
最近更新 更多