- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个用本地数据填充并使用idPrefix:“ custTable”选项创建的jqGrid,所有生成的行均在html id中获得前缀,即custTableRow_1 custTableRow_2等。是否需要将此idPrefix版本的id传递到jqGrid方法(如果是)是哪个?
例如使用deleteRowData删除行,是否需要前缀ID? setRowData或addRowData怎么样?在第x行之后添加时,似乎需要为srcrowid参数添加前缀。多选行怎么样?
如果我使用行的前缀ID删除行,则该行会从显示中消失,但是当我重新加载网格时,删除项会再次出现在网格中,就像未被删除一样。不使用idPrefix时不会发生这种情况。
谢谢你的帮助。
最佳答案
引入了idPrefix
选项,以使HTML页面上的ID保持唯一,即使您在该页面上具有从服务器加载的rowid之类的id。典型示例是从服务器加载数据的两个网格。让我们在数据库中有两个表,您可以在PRIMARY KEY
的定义中使用IDENTITY或AUTOINCREMENT。在这种情况下,主键将在表中自动生成,并且在表内将是唯一的,但在表上则不会唯一。因此,如果您将主键用作网格的ID并将两个网格放在一页上,则ID可以重复。
要解决此问题,可以在第一个网格中使用idPrefix: "a"
作为附加选项,在第二个网格中使用idPrefix: "b"
。在本地情况下,jqGrid将在各处使用带前缀的id,但是如果将id发送到服务器,则前缀将被剪切。
因此,您将在所有回调(事件)和所有方法(如setRowData
,addRowData
等)中本地看到带有前缀的ID,但是在服务器端,这些ID会在发送到服务器之前立即删除前缀。
我建议您另外阅读another answer有关我今天发布的ID中的限制的信息。
更新:我浏览了您在jsfiddle上编写的代码,并在代码中发现了一些明显的错误。您当前的代码
1)使用错误的算法来生成新行的ID。例如下面的代码
// generic way to create an animal
function newAnimal(collection, defaults) {
var next = collection.length + 1;
var newpet = {
id : next,
name: defaults.name + next,
breed: defaults.breed
};
return newpet;
}
collection.length + 1
作为新ID。如果允许删除项目是错误的。通过添加两个项目,从那里删除一个项目,然后再添加一个新项目一次,以确保ID重复。除此之外,使用一些只会递增的变量更为安全。例如,您可以使用
$.jgrid.randId()哪个代码非常简单。
addRowData
并手动添加前缀(请参见下面的
dogsPrefix+newdog.id
)。这是错误的,因为jqGrid将前缀再一次添加到行中。
// add dog button actions
$('#dogAddAtEnd').click(function() {
var newdog = newAnimal(dogs, dogDefaults);
dogs.push(newdog);
dogAdded();
dogsTable.jqGrid('addRowData', dogsPrefix+newdog.id, newdog);
});
grid.jqGrid('addRowData', newanimal.id, newanimal,
"after", prefix+ followingId);
dogsTable.jqGrid('addRowData', dogsPrefix+newdog.id, newdog);
grid.jqGrid('addRowData', newanimal.id, newanimal,
"after", followingId);
dogsTable.jqGrid('addRowData', newdog.id, newdog);
addRowData
,
delRowData
和
setRowData
的代码中的错误。问题出在
delRowData
的
the line和
setRowData
的
the same line
var pos = $t.p._index[rowid];
var id = $.jgrid.stripPref($t.p.idPrefix, rowid), pos = $t.p._index[id];
addRowData
内加入
var id = rowid; // pure id without prefix
rowid = t.p.idPrefix + rowid;
addRowData
。
addRowData
的
Another tow lines
lcdata[t.p.localReader.id] = rowid;
t.p._index[rowid] = t.p.data.length;
lcdata[t.p.localReader.id] = id;
t.p._index[id] = t.p.data.length;
$.jgrid.stripPref
方法从行标识符中删除前缀。例如功能
//general delete selected
function deleteSelectedAnimal(list, grid, prefix)
{
var sel = grid.jqGrid('getGridParam', 'selrow');
if (sel.length)
{
var gridrow = sel;
//get the unprefixed model id
var modelid = gridrow;
if (prefix.length !== 0)
{
modelid = modelid.split(prefix)[1];
}
// make it a numeric
modelid = Number(modelid);
//delete the row in the collection
list = RemoveAnimal(list, modelid);
//delete the row in the grid
grid.jqGrid('delRowData', gridrow);
}
}
//general delete selected
function deleteSelectedAnimal(list, grid)
{
var sel = grid.jqGrid('getGridParam', 'selrow'),
gridPrefix = grid.jqGrid('getGridParam', 'idPrefix');
if (sel !== null)
{
//delete the row in the collection
// ??? the gogs list will be not modified in the way !!!
list = RemoveAnimal(list, $.jgrid.stripPref(gridPrefix, sel));
//delete the row in the grid
grid.jqGrid('delRowData', sel);
}
}
list = RemoveAnimal(list, $.jgrid.stripPref(gridPrefix, sel));
或函数
RemoveAnimal
是否可以实现所需的功能,但与jqGrid连接起来并不是问题。
id
属性添加到网格的对象中使用了。它与
localReader.id中定义的名称相同。在这种情况下,来自
id
属性的数据将用作网格行(
id
)的
<tr>
属性。本地
data
参数会将
id
另外保存到其他属性,这些其他属性是从
name
项的
colModel
属性构建的。所以我认为定义隐藏列是没有意义的
{ key: true, name: 'id', align: 'left', hidden: true }
id
列,则如何查看
the demo上所有停留的方式与以前完全一样。
关于jqgrid - jqGrid中idPrefix的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9697215/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!