【发布时间】: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