【问题标题】:JqGrid give ID when button pressed按下按钮时JqGrid给出ID
【发布时间】:2016-04-28 11:50:57
【问题描述】:

我无法在我的 JqGrid 中选择任何行,所以我遇到了http://www.jqgrid.com/jqgrid/forum/codemerx-jqgrid-for-asp-net/146-can-t-select-rows。这说我需要为每一行提供一个 ID。每次按下按钮时,我都会将数据添加到网格中。我尝试使用简单的点击计数器功能为每一行提供一个 id。但是当我尝试从网格中对所有 ID 进行排序时,我会消失。

有什么建议可以解决这个问题吗?

网格

$(document).ready(function () {

    // Configuration for jqGrid Example 1
    $("#table_list_1").jqGrid({
        data: currentTime,
        datatype: "local", //if enabled id dissapear
        height: "100%",
        autowidth: true,
        shrinkToFit: true,
        loadonce: true,
        sortable: true,
        rowNum: 100,
        rownumbers: true,

        rowList: [10, 20, 30],
        colNames: ['Id','Time', 'Note'], // 'Id'
        colModel: [
            {name: 'id', index:'id', width:60, sorttype: 'number', sortable: true},
            { name: 'time', index: 'time', width: 60, sorttype: 'number', sortable: true, editable: true, formatter: "number" },
            { name: 'note', index: 'note', width: 60, cellEdit: true, editable: true }

        ],
        pager: "#pager_list_1",
        viewrecords: true,
        caption: "Example jqGrid 1",
        add: true,
        edit: true,
        addtext: 'Add',
        edittext: 'Edit',
        hidegrid: false
    });


    $('#table_list_1').navGrid('#pager_list_1',
            { edit: false, add: false, del: false, search: true, refresh: true, view: false, position: "left", cloneToTop: true },
            { reloadAfterSubmit: true });

    $('#table_list_1').navButtonAdd('#pager_list_1',
            {
                buttonicon: "ui-icon-pencil",
                title: "Edit",
                caption: "",
                position: "last",

            });

我如何添加数据

var currentTime = [];
var id = 0;
function doKeyDown(e) {

    //test  document.getElementById("currentTimeText").innerHTML = currentTime;
    if (e.keyCode == 49 & wavesurfer.isPlaying()) {
        // KEY = " 1 " 


        id += 1;
        currentTime.push(wavesurfer.getCurrentTime());
        jQuery("#table_list_1").addRowData("", { id: id, time: wavesurfer.getCurrentTime() });

        //test  document.getElementById("currentTimeText").innerHTML = currentTime;

        wavesurfer.addRegion({
            start: wavesurfer.getCurrentTime(),
            end: wavesurfer.getCurrentTime() + 0.1,
            color: '#19aa8d',
            resize: false,
            drag: false,

        });

    }

}

【问题讨论】:

  • 请在每个问题中写下您使用的 jqGrid 版本和分叉(free jqGrid、商业Guriddo jqGrid JS 或版本 doKeyDown 的代码不清楚。你在哪里使用它?你写了一些按钮,但不清楚哪个关系有按钮的网格。您使用了data: currentTime,但没有包含任何测试数据。
  • 它的版本 4.6。每次用户按下“1”键时,doKeyDown 都会添加一行数据。在这种情况下,它会从歌曲播放中获取时间,并为每次按下按钮添加一个“id”。
  • 对不起,我不明白代码的意义。无论如何,如果您希望 jqGrid 为您生成唯一 ID,最好使用 undefined 值作为 id。为什么要向用户显示如此奇怪的 id(参见id 专栏)?此外,rowid 不是来自id 属性的值,而是您使用相同"" 值的第一个参数。我认为这是您代码中的主要错误。
  • navButtonAdd 的调用看起来也很奇怪。在方法中使用总是onClickButton 回调。
  • 我只希望它计算每一行。 “rownumbers: true”基本上是在做我想要的工作,但我希望能够对其进行排序。这就是我尝试实现自己的“行号”的原因,希望它能消除很多困惑。

标签: javascript jquery asp.net jqgrid


【解决方案1】:

rowid 不是来自id 属性的值,而是您使用相同"" 值的第一个参数。我认为这是您代码中的主要错误。来电

jQuery("#table_list_1").addRowData("", { id: id, time: wavesurfer.getCurrentTime() });

至少应该固定到

jQuery("#table_list_1").addRowData(undefined, { id: id, time: wavesurfer.getCurrentTime() });

【讨论】:

  • 至少 id 不再消失,但现在它用 jqg1 替换“1”,用 jqg2 等替换“2”等。如果我能得到 1,2, ,3 ,4 ,5 等我都很好。
  • @Dolle:我让你描述一下你想用网格做什么。如果id列应该是插入行的顺序,就可以了。我还是不明白为什么jqg1对你不好?如果您将使用其他参数或在页面上有两个网格,那么值会更高。用户将看不到 id。你为什么要改变它?例如,HTML4 规范不允许使用以数字开头的 id 值,但所有 Web 浏览器都可以正常使用数字 id 等 id。因此 jqGrid 生成每个默认的文本前缀 + 数字作为 id。默认前缀是jqg
  • @Dolle:一个可以改变前缀,一个可以改变很多其他的东西,但是为什么呢?
【解决方案2】:

这样解决:

jQuery("#table_list_1").addRowData(id, { id: id, time:  wavesurfer.getCurrentTime() });

所以我只给了它“id”而不是“未定义” 这也解决了我的选择问题。

【讨论】:

    猜你喜欢
    • 2013-06-18
    • 2020-11-16
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多