【问题标题】:JqGrid is getting displayed as a non editable modal inside a jquery dialogJqG​​rid 在 jquery 对话框中显示为不可编辑的模式
【发布时间】:2012-12-10 15:10:04
【问题描述】:

我正在使用 jquery 对话框并在 jquery 对话框中显示 JqGrid。一切工作正常,但 JqGrid 显示为不可编辑的模式。所以我可以在对话框中编辑任何内容。

即使我关闭并重新打开对话框,它仍然保持不变,只有当我刷新页面时它才会变得正常,直到整个对话框显示为不可编辑的模式......

代码逻辑运行良好..这似乎是一个 UI 问题..请帮助我..无论如何我在下面发布我的代码供您参考..请查看并帮助我解决问题。 .

这是我的 aspx 代码:

<div>
<span id="span_create" style="color: #88b807; margin-left: 839px;
                            margin-top: -12px; cursor: pointer; display: block">Create</span>
</div>
     <div id="Createdialog" style="display: none; overflow: hidden">
                    <table id="table" style="border-spacing: 7px 7px; margin-left: 5px">
                        <tr>
                            <td>
                                <span class="SubHeading" style="font-size: 10pt;">Private Space Name </span>
                            </td>
                            <td>
                                <asp:TextBox ID="txt_spacename" runat="server" />
                            </td>
                        </tr>

                        <tr>
                            <td>
                                <span class="SubHeading" style="font-size: 10pt;">Users </span>
                            </td>
                            <td>
                                <asp:TextBox ID="txt_users" TextMode="MultiLine" runat="server" />
                            </td>
                            <td>
                                <asp:Button ID="btn_addusers" Text="Add" Style="margin-left: 0px;" runat="server" />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <table id="users_grid">
                                </table>
                            </td>
                        </tr>
                    </table>
                    <input type="button" id="Btn_Submit" value="Create" style="margin-left: 280px; margin-top: 8px;"
                        runat="server" />
                </div>

这是我的 Js 代码:

$("#Createdialog").dialog({
                autoOpen: false,
                title: 'Create Private space',
                modal: true,
                position: 'center',
                width: 900

            });

            $('#span_create').click(function() {
                $("#Createdialog").find('input:text, textarea').val('');
                $('#Createdialog').dialog('open');
                return false;
            });

$('#btn_addusers').click(function() {

        $("#users_grid").jqGrid({

            colNames: ['User_ID', 'Name', 'Email_Id'],
            colModel: [{ name: 'User_ID', index: 'User ID', width: 130, editable: false, sortable: false },
            { name: 'Name', index: 'Name', width: 350, editable: false, sortable: false },
            { name: 'Email_Id', index: 'Email Id', width: 350, editable: false, sortable: false}],

            width: 400,
            height: 'auto',
            multiselect: true,
            modal: false

        });


        var UserID = $('#Header1_txt_users').val();
        var datapost = {};


        datapost.UserId = UserID;
        var postJSONData = JSON.stringify({ 'postdata': JSON.stringify(datapost) });


        $.ajax({
            type: 'POST',
            data: postJSONData,
            url: 'PrivateSpaceService.asmx/GetUserDetails',
            dataType: 'json',
            async: false,
            contentType: 'application/json; charset=utf-8',
            success: function success(response) {

                UserArr = response.d;

            },
            error: function failure(response) {
                alert('failed');
            }
        });

        var mydata;


        for (var i = 0; i < UserArr.length; i++) {


            mydata = {};


            mydata.User_ID = UserArr[i].UserId;
            mydata.Name = UserArr[i].UserName;
            mydata.Email_Id = UserArr[i].EmailId;

            $("#users_grid").jqGrid('addRowData', 'GridData_Row_' + (i + 1), mydata);


        }
        return false;


    });

【问题讨论】:

  • 抱歉,很难理解您有什么问题。例如,您写道“但是 JqGrid 正在显示为不可编辑的模式”。您在每一列中使用 editable: false 属性。哪个编辑你有什么?你的意思是哪个“可编辑模式”?此外,您使用addRowData 以非常低效的方式填充网格体。如果您需要使用从服务器通过 Ajax 加载的数据填充网格,您应该直接使用 jqGrid 并仅使用一些 jqGrid 选项,例如 jsonReader,它对应于从服务器返回的数据格式。
  • @Oleg 一旦我在 jquery 对话框中单击“btn_addusers”,jqgrid 就会显示出来。但它在对话框中显示为模态(即),就好像一个模态对话框在页面...
  • 对不起,我不明白你的意思。 jqGrid 只是您创建的对话框上的一个可视元素。它怎么可能是“模态的”?我还是不明白你的意思是什么编辑。
  • @Oleg 如果在页面中打开一个对话框..它将形成一个模式,我们无法编辑页面中的任何内容..类似的事情发生在我的情况..我有一个对话框我在里面显示jqgrid..但是jqgrid的显示方式和我上面说的一样,所以我可以在对话框中编辑任何东西..我不想在jqgrid中编辑任何东西..我只想编辑对话框中的一些文本框值..
  • @Oleg 当我签入 Firebug 时,它会在显示 Jqgrid 时加载一个类 [class="ui-widget-overlay jqgrid-overlay"]。认为这是导致问题的原因

标签: jquery asp.net css jqgrid jquery-dialog


【解决方案1】:

可能是 z-index 的问题。这是具有更大 z-index 的示例代码示例 (http://jsfiddle.net/c3BPP/),它可以工作。 z-Index 像 100 是不可编辑的

试试看。

【讨论】:

  • 对话框对我来说很好。只有在显示 JQgrid 后我才面临这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 2011-09-10
相关资源
最近更新 更多