- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看起来这个问题至少被问过once before但没有得到答复。我还看到这个问题关于基于标准“表单”的编辑的回答,但不是内联的。
代码
$(function() {
var lastSel;
var MSVendors = {'9990':'XXXXXX - LEXI','9991':'XXXXXX - RICH','9992':'XXXXXX - BIRM','9993':'XXXXXX - PEMB' };
$('#special_dialog').dialog({
width:'auto',
height:'auto',
resizable:true
});
$.extend($.jgrid.defaults,{
rowNum:250,
rowList:[1000,2500,5000],
viewrecords:true,
sortorder:'asc',
height:800,
autowidth:true,
deepempty:true,
altRows: true,
grouping: true,
groupingView: {
groupField: ["vendor"],
groupColumnShow: [true],
groupText: ["<b>WAREHOUSE : {0}</b>"],
groupDataSorted: true,
groupSummary: [false]
}
});
var surplusGrid = $('#surplusGrid'),
editingRowId,
sEditParam = {
keys: true,
oneditfunc: function(id) {
editingRowId = id;
$('#surplusGrid_ilsave').removeClass('ui-state-disabled');
$('#surplusGrid_ilcancel').removeClass('ui-state-disabled');
},
afterrestorefunc: function() {
editingRowId = undefined;
}
},
sAutoCompOpts = {
source: function(request, response) {
$.getJSON('/json/json.searchmultiMaterials.php',{term:request.term,type:'m'},function(data) {
response(data);
});
},
minLength: 3,
focus: function(e,ui) {
$('input:text[name="description"]').val(ui.item.description);
$('input:text[name="vendor"]').val(ui.item.vendor);
$('input:text[name="mfgr_partno"]').val(ui.item.mfgr_partno);
},
select: function(e,ui) {
$('input:text[name="description"]').val(ui.item.description);
$('input:text[name="vendor"]').val(ui.item.vendor);
$('input:text[name="mfgr_partno"]').val(ui.item.mfgr_partno);
}
},
sAddParam = {
rowID: 'new',
position:'last'
};
surplusGrid.jqGrid({
url: '/json/json.getSurplusStock.php',
datatype:'json',
emptyrecords: 'Surplus Stock is currently depleted!',
colNames: ['ID','Type','Part#','Description','On-Hand','On-Order','On-Hold','Min Stock','Warehouse','Shelf','Bin'],
colModel: [
{ name:'id',
index:'id',
hidden:true,
key:false,
search:false,
viewable:false
},
{ name:'type',
index:'type',
width:35,
sortable:true,
editable:false,
align:'center',
editoptions:{defaultValue:'B'},
cellattr: function(rowId,val) {
if (val == 'B') {
return 'class="blue_stock"';
} else {
return 'class="gold_stock"';
}
}
},
{ name:'surplus_partno',
index:'surplus_partno',
width:140,
sortable:false,
editable:true,
classes:'ui-ellipsis',
edittype:'text',
editoptions:{size:25},
editrules:{required:true}
},
{ name:'description',
index:'description',
width:200,
sortable:false,
align:'left',
editable:true,
classes:'ui-ellipsis',
edittype:'text',
editoptions:{size:40},
editrules:{required:true}
},
{ name:'on_hand',
index:'on_hand',
width:60,
sortable:false,
editable:true,
align:'center',
edittype:'text',
editoptions:{size:6},
editrules:{required:true,integer:true,minValue:0}
},
{ name:'on_order',
index:'on_order',
width:60,
sortable:false,
editable:true,
align:'center',
edittype:'text',
editoptions:{size:6},
editrules:{required:false,integer:true,minValue:0}
},
{ name:'on_hold',
index:'on_hold',
width:60,
sortable:true,
editable:true,
align:'center',
edittype:'text',
editoptions:{size:6},
editrules:{required:true,integer:true}
},
{ name:'min_threshold',
index:'min_threshold',
width:60,
sortable:true,
editable:true,
align:'center',
edittype:'text',
editoptions:{size:6},
editrules:{required:true,integer:true,minValue:0}
},
{ name:'vendor',
index:'vendor',
width:120,
editable:true,
align:'center',
editoptions:{value:MSVendors},
edittype:'select',
editrules:{required:true,integer:true}
},
{ name:'shelf',
index:'shelf',
width:40,
sortable:true,
editable:true,
align:'center',
editoptions:{size:10}
},
{ name:'bin',
index:'bin',
width:40,
sortable:true,
editable:true,
align:'center',
editoptions:{size:10}
}
],
pager:'#surplusFoot',
sortname:'b.id',
caption:'Surplus Stock Inventory',
onSelectRow: function(id) {
if(id && id !== lastSel) {
surplusGrid.jqGrid('restoreRow',lastSel);
var cm = surplusGrid.jqGrid('getColProp','vendor');
if (id != 'new') { cm.editable = false; }
lastSel = id;
}
surplusGrid.jqGrid('editRow',id,true);
$('#surplusGrid_ilsave').removeClass('ui-state-disabled');
$('#surplusGrid_ilcancel').removeClass('ui-state-disabled');
},
editurl:'/jqg/jqg.saveSurplusStockEdit.php'
});
surplusGrid.jqGrid('navGrid','#surplusFoot',{
add:false,
edit:false,
del:false
});
surplusGrid.jqGrid('inlineNav','#surplusFoot',{
add:true,
edit:true,
editParams:sEditParam,
addParams:sAddParam
});
// re-size all grids when dialog box resizes
$('#special_dialog').dialog({
resizeStop: function(e,ui) {
surplusGrid.jqGrid('setGridWidth', ui.size.width - 30);
}
});
});
在内联 ADD 上效果很好 - 出现下拉列表,并且值按预期传递到编辑 URL。然而,在内联编辑中,整个下拉列表消失,留下“ ”作为单元格内容,而不是网格最初加载时存在的值。
最佳答案
inlineNav
的用法是内联编辑的一个特例,因为editRow
将被调用。从jqGrid 4.5.3开始内联编辑支持beforeEditRow
和beforeAddRow
引入回调主要是为了在使用时提供额外的自定义inlineNav
。方法beforeEditRow
比较有趣,因为无论调用editRow
的方式都会被调用.
在提供使用示例之前beforeEditRow
我想说你必须修复 sAddParam
中的错误,您可以将其用作 addRow
的选项。您使用了不需要的危险参数rowID: 'new'
。结果每个新行的 id 都是相同的:“new”。这样你就会有 id 重复项。 jqGrid 的早期版本也存在同样的问题。当前版本的jqGrid使用$.jgrid.randId()
为新添加的行生成新的唯一 id if rowID
是 null
或undefined
。默认值rowID
是 null
。所以我强烈建议您删除 rowID: 'new'
选项。
下一个重要的事情是 addParams
的含义inlineNav
的选项。方法addRow
内部调用相同editRow
方法。 addRowParams
addParams
的属性(property)允许指定 editRow
选项调用 addRow
。所以我强烈建议您使用addParams
格式如下
var sEditParam = {
... // any options or callbacks
},
sAddParam = {
position: 'last',
addRowParams: sEditParam
};
这样,您将确保即使在使用 addRow
的情况下,也会应用内联编辑的所有回调和选项。 .
现在回到你的主要问题。我建议您使用beforeEditRow
更改editable
vendor
的属性(property)柱子。要测试当前行是否只是添加,我建议测试 jqgrid-new-row
是否存在类(class)。相应的代码可能如下所示
var sEditParam = {
beforeEditRow: function (option, rowid) {
var tr = $(this).jqGrid("getGridRowById", rowid);
$(this).jqGrid("setColProp", "vendor", {
editable: !$(tr).hasClass("jqgrid-new-row")
});
}
};
surplusGrid.jqGrid("inlineNav", "#surplusFoot", {
add: true,
edit: true,
editParams: sEditParam,
addParams: {position: "last", addRowParams: sEditParam}
});
关于javascript - jqGrid - 在 "edit"上禁用内联下拉菜单,但不在 "add"上禁用内联下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26997967/
我有 Site {{$url}} 和 $(function(){ $('#pencil').click
我在每一行都有一个编辑按钮,我已经设置了 defaultColDef: { editable: false, } 在网格选项中 当我点击编辑按钮时,我希望该行处于编辑模式。如果我设置
我在每一行都有一个编辑按钮,我已经设置了 defaultColDef: { editable: false, } 在网格选项中 当我点击编辑按钮时,我希望该行处于编辑模式。如果我设置
我有一个 html 文件,我想编辑其中的字段。以下是我的 html 代码: ID GROUP NAME GROUP DESCRIPTION IS A
我希望管理员能够编辑普通用户无法编辑的字段。例如作者或订阅者等。 我试过这个:Django admin: How to display a field that is marked as editab
如何将PS文件中间的数据移动到Mainframe的左侧?有什么快捷命令吗? 我有一个数据集,第 13 列有数据,必须将其移动到第 11 列,任何短键都可以移动它。 想要将 DS 中的其余行作为第一行对
我在 div 中有一个可编辑元素,它本身是可点击的。每当我单击 x-editable anchor 元素时,单击会在 DOM 中冒泡并触发对父 div 的单击。我怎样才能防止这种情况发生?我知道可以使
我有一个类似这样的模型: class Product(models.Model): third_party_id = models.CharField(max_length=64, blank
我有一个包含 2 个可编辑文本字段的页面 {{creator.name}} Tell us about yourself in less than 100 words
这是我的架构: id: 'EntryCode', fields: { EntryCode: {editable: true, validation: {required: true}, nul
有人可以帮助确定这个问题 - http://jsfiddle.net/xBB5x/8823/ 我正在尝试实现 x-editable (bootstrap 2) typeahead 功能。 上面的 js
如果我使用例如 g_object_set (renderer, "background", "red", "background-set", FALSE, NULL); 对于文本渲染器, TreeVi
我在创建和编辑页面上都使用了 Angular 文件,但我想知道是否有办法阻止用户在/edit 页面上编辑 Geo Segment 的名称。 geo-region-detail.html: G
我正在尝试向 QListWidget 添加一个项目,选择该项目,然后开始编辑新项目。 该项目被添加,它被选中,但该行没有被引入 QLineEdit,或者它试图使用的任何东西。 这是我的小部件的代码,相
我有一个表格,其中的单元格和列中有多个值。当用户单击 TD 单元格上的任意位置时,我希望它: 成为文本区域 将当前文本粘贴到文本区域 在其下方放置一个取消按钮 一旦按下取消按钮,我希望一切都变回以前的
在我的程序中,会有一个机会编辑框,它可以更改“掉率”或“获胜率” 但我想将其更改为如果用户输入大于 100 的数字并点击编辑框,编辑框文本将变回 100。 我不知道如何实现这个。 最佳答案 看看下面的
我想创建我的编辑表单,以便它将当前用户信息简单地显示为文本,而不是在文本字段中,当用户单击文本时,它将变成文本字段,用户可以编辑他的信息。仅当用户单击提交按钮时,更改才会反射(reflect)在数据库
我有一个 QTreeWidgetItem 添加到 QTreeWidget: QTreeWidgetItem* item = new QTreeWidgetItem(ui->trwPairs); ite
我检查了最新的 Dropbox 和 Excel for iOS。在 Dropbox 中,我们有一个编辑按钮。单击它会打开 Excel 的扩展程序,您可以在其中编辑文件。 保存后,更改也会反射(refl
我目前正在使用pycord创建一个Python语言的不和谐机器人。我有一个发送消息的命令,其中嵌入了两个字段。一个名为Yes,值为0;另一个名为No,值也为0。在选择菜单中,我创建了两个选项。选项是和
我是一名优秀的程序员,十分优秀!