【发布时间】:2012-01-16 22:52:42
【问题描述】:
几个月以来我一直在使用 jqGrid,我真的很高兴这样做 :)
我在 ASP.NET Web 应用程序中成功使用了 jqGrid,一切正常。我决定使用 jqGrid 表单编辑,因为实体有很多我需要处理的属性。 我知道,如果 colModel 包含 5 个 col,如果属性具有可编辑:true,它们会出现在模式对话框表单(编辑操作)上。此外,我可以设置 4 个属性是可见的,最后一个是隐藏的(即使它可以出现在表单上,通过设置 edithidden: true)。
有没有办法可以在 colModel 中设置 4 个属性,但弹出模式表单中有一个、两个或更多字段?
编辑:
请看这段代码:
ajaxSelectOptions: { type: "POST", contentType: "application/json; charset=utf-8", },
colNames: [
'ID', 'Code', 'Number', 'Floor (nr.)', 'Descr', 'Type',
'Create by', 'Creation date',
'Status', 'Features'],
colModel: [
{ name: 'ID', index: 'id', width: 10, align: "center", search: false, sorttype: 'int', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{ name: 'Code', index: 'Code', width: 20, align: "center", sorttype: 'text', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{
name: 'Number',
index: 'Number',
width: 20,
align: "center",
sorttype: 'int',
searchoptions: { sopt: ['eq', 'ne', 'cn'] },
editable: true,
editoptions: { size : 20 },
editrules: { required: true }
},
{
name: 'Floor',
index: 'Floor',
width: 30,
align: "center",
sorttype: 'int',
search: false,
edittype: 'select',
editable: true,
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid" name="myid">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
},
editrules: { required: true }
},
{ name: 'Descr', index: 'Descr', width: 40, align: "center", sorttype: 'text', editable: true, editoptions: { size: 10} },
{
name: 'Type',
index: 'Type',
width: 50,
align: "center",
sorttype: 'text',
edittype: 'select',
editable: true,
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid2" name="myid2">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
},
editrules: { required: true }
},
{ name: 'CreatedBy', index: 'CreatedBy', align: "center", search: false, sorttype: 'text', width: 40, searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{ name: 'CreationDate', index: 'CreationDate', align: "center", search: false, sorttype: 'text', width: 30, searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{
name: 'Status',
index: 'Status',
width: 50,
hidden: true,
edittype: 'select',
editable: true,
editrules: { edithidden: true, required: true },
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid3" name="myid3">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
}
},
{
name: 'Features',
index: 'Features',
width: 50,
hidden: true,
edittype: 'select',
editable: true,
editrules: { edithidden: true, required: true },
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid4" name="myid4">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
}
}
],
这是我用来在我的 aspx 页面上创建网格的函数的摘录。从 colModel 可以看出,有 10 个 col,但 jqGrid 只显示了其中的 7 个;我需要其他的,因为当我在网格上编辑记录时,我想以模式弹出形式显示它们。
现在,我想写下更简洁的代码:我更愿意在构建弹出窗口时在编辑按钮单击时添加这 3 个字段,而不是在 colModel 中列出它们
【问题讨论】:
-
您想自定义编辑表单添加一些附加信息吗?您是否希望将附加字段的值发送到服务器?您想从哪里获取字段信息?它只是隐藏列中的字段还是其他信息?我不确定你到底想要什么。一个例子可以清除所有内容。
-
请查看编辑部分...感谢您的评论,Oleg(我非常感谢您在 stackoverflow 上的工作)
标签: jqgrid jqgrid-asp.net