jqGrid将字段切换为从文本中下拉
我有一个jqGrid,其中有一些列,其中一列是从数据库填充的dropdownlistselect 我想要的是:当im不在带有下拉列表的编辑模式列中时,只需显示必须从查询中获取的文本,当im处于编辑模式时,它应该显示下拉列表 与此处完全相同:进入行编辑/输入提示 以下是我的网格的代码:jqGrid将字段切换为从文本中下拉,jqgrid,Jqgrid,我有一个jqGrid,其中有一些列,其中一列是从数据库填充的dropdownlistselect 我想要的是:当im不在带有下拉列表的编辑模式列中时,只需显示必须从查询中获取的文本,当im处于编辑模式时,它应该显示下拉列表 与此处完全相同:进入行编辑/输入提示 以下是我的网格的代码: <script type="text/javascript"> var lastsel; $(document).ready(function () { $.getJS
<script type="text/javascript">
var lastsel;
$(document).ready(function () {
$.getJSON('@Url.Action("ConstructSelect")', function (data) {
setupGrid(data);
});
});
function setupGrid(data) {
jQuery(document).ready(function () {
jQuery("#list").jqGrid({
url: '@Url.Action("GetStoreList")',
datatype: 'json',
mtype: 'GET',
colNames: ['Butiks kategori', 'Butik Navn', 'By', 'Sælger'],
colModel: [
{ name: 'Id', index: 'Id', width: 50 },
{ name: 'Butiks Kategori', index: 'StoreId', width: 200, edittype: 'text', align: 'center', editable: false },
{ name: 'Buttiks Navn', index: 'StoreName', width: 200, edittype: 'text', align: 'center', editable: false },
{ name: 'Country', index: 'Country', width: 80, sortable: true, editable: true, edittype: "select", editoptions: { value: data }}],
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#list').jqGrid('restoreRow', lastsel);
jQuery('#list').jqGrid('editRow', id, true);
lastsel = id;
}
},
editurl: '@Url.Action("GridSave")',
rowNum: 50000,
rowList: [5, 10, 20, 50],
pager: '#page',
sortname: 'Id',
sortorder: "desc",
viewrecords: true,
height: "500px",
imgpath: '/scripts/themes/base/images'
});
jQuery("#list").jqGrid('navGrid', "#page", { edit: false, add: false, del: false });
});
}
</script>
通常,您必须告诉buildselect您要修改的数据是字符串
但我仍然有一个问题,那就是它从一开始就没有显示哪些卖家已经被选中了
好吧,重新启动后,它神秘地工作了。。。现在已经解决了您需要做的是使用
editoptions: { dataUrl: '@Url.Action("ConstructSelect")' }
而不是
editoptions: { value: data }
根据action ConstructSelect输出的格式,您可能需要使用editoptions的附加属性buildSelect。jqGrid期望dataUrl的HTTP“GET”请求上的服务器响应将是表示以下内容的HTML片段。例如:
<select>
<option value="de">Germany</option>
<option value="us">USA</option>
</select>
或
您可以编写JavaScript函数,将服务器响应转换为的HTML片段,并将属性buildSelect的值设置为该函数
在中,您将找到该函数的示例
如果您的操作仅支持HTTP POST和no GET,则还必须使用ajaxSelectOptions:{type:POST}参数来覆盖相应ajax请求的类型。同样,您可以覆盖其他ajax参数。例如,您可以使用
ajaxSelectOptions: { type: "POST", dataType: "json"}
默认值为type:GET和dataType:html
代码中的其他一些小注释:
不应将$document.readyfunction{放在另一个$document.readyfunction{的内部。
您使用“Id”而不是“Id”。因此jqGrid将找不到Id属性。您可以重命名
“Id”到“Id”b包含附加参数jsonReader:{Id:'Id'}c在列“Id”的定义中包含附加属性键:true。任何方法都将解决所述问题。
您可以删除默认属性,如edittype:'text',sortable:true或editable:false。请参阅描述所有colModel属性默认值的内容。
您应该删除jqGrid的imgpath参数。该参数不存在,因为jqGrid的许多版本都可以看到。
你需要做的是使用
editoptions: { dataUrl: '@Url.Action("ConstructSelect")' }
而不是
editoptions: { value: data }
根据action ConstructSelect输出的格式,您可能需要使用editoptions的附加属性buildSelect。jqGrid希望dataUrl的HTTP“GET”请求上的服务器响应将是表示以下内容的HTML片段。例如:
<select>
<option value="de">Germany</option>
<option value="us">USA</option>
</select>
或
您可以编写JavaScript函数,将服务器响应转换为的HTML片段,并将属性buildSelect的值设置为该函数
在中,您将找到该函数的示例
如果您的操作仅支持HTTP POST和no GET,则还必须使用ajaxSelectOptions:{type:POST}参数来覆盖相应ajax请求的类型。同样,您可以覆盖其他ajax参数。例如,您可以使用
ajaxSelectOptions: { type: "POST", dataType: "json"}
默认值为type:GET和dataType:html
代码中的其他一些小注释:
不应将$document.readyfunction{放在另一个$document.readyfunction{的内部。
您使用“Id”而不是“Id”。因此jqGrid将找不到Id属性。您可以重命名
“Id”到“Id”b包含附加参数jsonReader:{Id:'Id'}c在列“Id”的定义中包含附加属性键:true。任何方法都将解决所述问题。
您可以删除默认属性,如edittype:'text',sortable:true或editable:false。请参阅描述所有colModel属性默认值的内容。
您应该删除jqGrid的imgpath参数。该参数不存在,因为jqGrid的许多版本都可以看到。
关于typeofdata==string的问题:你是对的。我已经描述了这个问题。请参阅另外的和。在新版本的jqGrid中,数据参数将已经是字符串数组,你将不需要调用jQuery.parseJSON。关于typeofdata==string的问题:你是对的。我已经描述了这个问题。请参阅添加在新版本的jqGrid中,数据参数已经是字符串数组,您不需要调用jQuery.parseJSON。