jqGrid将字段切换为从文本中下拉

jqGrid将字段切换为从文本中下拉,jqgrid,Jqgrid,我有一个jqGrid,其中有一些列,其中一列是从数据库填充的dropdownlistselect 我想要的是:当im不在带有下拉列表的编辑模式列中时,只需显示必须从查询中获取的文本,当im处于编辑模式时,它应该显示下拉列表 与此处完全相同:进入行编辑/输入提示 以下是我的网格的代码: <script type="text/javascript"> var lastsel; $(document).ready(function () { $.getJS

我有一个jqGrid,其中有一些列,其中一列是从数据库填充的dropdownlistselect

我想要的是:当im不在带有下拉列表的编辑模式列中时,只需显示必须从查询中获取的文本,当im处于编辑模式时,它应该显示下拉列表

与此处完全相同:进入行编辑/输入提示

以下是我的网格的代码:

<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。