![]() |
儒雅的书包 · 清华大学美术学院2024年博士生招生简章· 2 月前 · |
![]() |
长情的单车 · Maître de ...· 2 月前 · |
![]() |
爽快的汽水 · 穆悦-作物表型组学交叉研究中心-南京农业大学· 2 月前 · |
![]() |
时尚的豌豆 · 沈珍珠和独孤氏,谁才是唐代宗李豫心中真正的白 ...· 11 月前 · |
![]() |
年轻有为的热带鱼 · 百度百科召开学术委员会首期研讨会,以权威知识 ...· 1 年前 · |
我需要从服务器加载一个JSON,我想让用户点击并编辑这个值。
但是当他们编辑时,它不应该调用服务器。我的意思是我不会马上更新。所以我不想要社论。所以我尝试了'ClientArray‘,但它仍然显示Url没有设置警报框。但是当用户单击“添加注释项”按钮时,需要所有已编辑的值,此按钮将触发 AddSelectedItemsToSummary() 以保存在服务器中的值。
MVC HTML脚本
<div>
<table id="persons-summary-grid"></table>
<input type="hidden" id="hdn-deptsk" value="2"/>
<button id="AddSelectedItems" onclick="AddSelectedItemsToSummary();" />
$(document).ready(function(){
showSummaryGrid(); //When the page loads it loads the persons for Dept
});
JSON数据
{"total":2,"page":1,"records":2,
"rows":[{"PersonSK":1,"Type":"Contract","Attribute":"Organization
Activity","Comment":"Good and helping og"},
{"PersonSK":2,"Type":"Permanant","Attribute":"Team Management",
"Comment":"Need to improve leadership skill"}
]}
jQGRID代码
var localSummaryArray;
function showSummaryGrid(){
var summaryGrid = $("#persons-summary-grid");
// doing this because it is not firing second time using .trigger('reloadGrid')
summaryGrid.jqGrid('GridUnload');
var deptSk = $('#hdn-deptsk').val();
summaryGrid.jqGrid({
url: '/dept/GetPersonSummary',
datatype: "json",
mtype: "POST",
postData: { deptSK: deptSk },
colNames: [
'SK', 'Type', 'Field Name', 'Comments'],
colModel: [
{ name: 'PersonSK', index: 'PersonSK', hidden: true },
{ name: 'Type', index: 'Type', width: 100 },
{ name: 'Attribute', index: 'Attribute', width: 150 },
{ name: 'Comment', index: 'Comment', editable: true,
edittype: 'textarea', width: 200 }
cellEdit: true,
cellsubmit: 'clientArray',
editurl: 'clientArray',
rowNum: 1000,
rowList: [],
pgbuttons: false,
pgtext: null,
viewrecords: false,
emptyrecords: "No records to view",
gridview: true,
caption: 'dept person Summary',
height: '250',
jsonReader: {
repeatitems: false
loadComplete: function (data) {
localSummaryArray= data;
summaryGrid.setGridParam({ datatype: 'local' });
summaryGrid.setGridParam({ data: localSummaryArray});
)
按钮单击函数
function AddSelectedItemsToSummary() {
//get all the items that has comments
//entered using cell edit and save only those.
// I need to prepare the array of items and send it to MVC controller method
// Also need to reload summary grid
}
有人能帮上忙吗? ,为什么我要得到那个URL没有设置错误?
编辑:
在loadComplete更改后,此代码正在工作。在它显示没有URL设置警告之前
发布于 2013-02-03 09:20:29
我不明白你描述的细胞编辑的问题。此外,您还编写了“当用户单击一行中的+图标时,我需要编辑的值”。"+“图标在哪里?你是说"trash.gif“图标吗?如果您想使用 单元格编辑 ,那么在单击行上的图标时,您是如何想象的呢?单击"trash.gif“图标时,哪个单元格应该开始编辑?您可以开始使用"trash.gif“图标 editCell 方法编辑其他单元格,但我不认为用户会感到舒服,因为从用户的角度来看,他将在单击另一个单元格时开始编辑另一个单元格。我好像很不舒服。可能您想要实现 内联编辑
代码中一个明显的错误是
showSummaryGrid
在
RemoveFromSummary
中的使用。函数
RemoveFromSummary
创建
jqGrid,而不仅仅是填充它。因此,人们应该只称它
一次,
。要刷新网格体,您应该调用
$("#persons-summary-grid").trigger("refreshGrid");
。不要使用
postData: { deptSK: deptSk }
,您应该使用
postData: { deptSK: function () { return $('#hdn-deptsk').val(); } }
在这种情况下,触发refreshGrid就足够了,它将从
'#hdn-deptsk'
向服务器发送当前值。有关详细信息,请参阅
答案
。
更新了 :我无法重现您描述的问题,但我准备了 演示 ,它可以满足您的需要(如果我正确理解您的需求)。您可能需要的代码中最重要的部分如下
$("#AddSelectedItems").click(function () {
var savedRow = summaryGrid.jqGrid("getGridParam", "savedRow"),
$editedRows,
modifications = [];
if (savedRow && savedRow.length > 0) {
// save currently editing row if any exist
summaryGrid.jqGrid("saveCell", savedRow[0].id, savedRow[0].ic);
// now we find all rows where cells are edited
summaryGrid.find("tr.jqgrow:has(td.dirty-cell)").each(function () {
var id = this.id;
modifications.push({
PersonSK: id,
Comment: $(summaryGrid[0].rows[id].cells[2]).text() // 2 - column name of the column "Comment"