似乎有许多解决方案非常接近于解决我的问题,但是我所倾倒的几十个问题似乎并没有完全解决我正在尝试做的事情.虽然我看到几乎同样的问题没有答案.我尝试了很多选项和功能组合无济于事.
我想使用模态表单将带有输入值的新行添加到jqGrid,但我不希望它在提交时发布到服务器.我想最终发布到服务器,但只有在客户端用户对从模式表单添加的行执行了额外编辑(如果需要)之后.我不希望任何行保存到远程数据库,直到客户端执行了一些编辑,这些编辑又动态更新其他列.验证某个值的某个状态后,将显示"保存"按钮,并且可以将"网格"行发布到服务器.除非满足此验证条件,否则不会将行提交给数据库.我在我的应用程序的其他地方使用了一些jqGrids,它们发布了提交的模式表单的新行数据,但是这个网格我试图完成与客户端不同的东西,而不是立即涉及服务器.我喜欢使用客户端用户初始输入值的模态表单的更直观的界面,然后根据需要编辑内联新行的字段,这是我的问题所必需的:我可以将表单作为新行提交发生在服务器上的任何发布操作?
我在jqGrid Wiki资源中看到一个用户发表的评论,该用户说"clientArray"是输入的值,使用Grids模态表单提交选项"editurl:"clientArray"模式表单不会吐出"No URL is set "消息但它仍然存在并且新行未添加到网格中.我已将Grid数据类型设置为本地"数据类型:'clientSide'"但是获得相同的"No URL is set"错误消息.脚本是对于由自定义按钮调用的模态窗体非常简单,如下所示:
("footerrow,userDataOnFooter和altRows"选项作为更新值的一部分包含在摘要页脚中,该页脚与通过模态表单添加的新行的单元格执行的编辑相关)
jQuery("#grid_test").jqGrid({
url:'/grid_test_url.asp?id=' + vId,
datatype: "clientSide",
colNames: ['ID','Col 1', 'Col 2', 'Col 3','Col 4'],
colModel: [
{name:'id',index:'id',width:90,align:"center",editable:true,editoptions:{size:25}, formoptions: {...}, editrules: {...}},
{name:'col1',index:'col1',width:130,align:"right",editable:true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col2',index:'col2',width:130,align:"right",editable:true,editoptions:{size: 25}, formoptions: {}, editrules: {}},
{name:'col3',index:'col3',width:130,align:"right",editable: true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col4',index:'col4',width:130,align:"right",editable:true,editoptions:{ size: 25 }, formoptions: {}, editrules: {}}
],
rowNum:5,
rowList:[5,10,20],
pager: '#pgrid_test',
toolbar: [true, "top"],
editurl: '', //not sure what would go here to block attempted post by the …Run Code Online (Sandbox Code Playgroud) 我已经填写了本网站上提出的每个问题,与填充jqGrid摘要页脚有关,而不是userdata是服务器请求.和jqGrid wiki资源,只是找不到答案.这可能吗?
我以许多典型的方式使用jqGrid作为我的管理门户的一部分,但有一个特别的用途,我希望jqGrid的外观和感觉开始作为一个空的UI容器的一些用户交互通过一个表单添加行发布提交(感谢Oleg下面的优秀脚本),但只需添加行并使用新添加的行中的值更新摘要页脚.我在colModel中有'summarytype:'sum"',"grouping:true",footerrow:true,userDataOnFooter:true,altRows:true,在网格选项中但是除了本地数据字符串中userdata提供的初始值之外,摘要页脚值永远不会改变.似乎没有人想触及这个主题.是因为jqGrid的主要特性是它的数据库驱动功能吗?我在其数据库驱动的站点中使用了大约15个jqGrid实例(其中许多都在生产服务中)但是为了一致性需要使用它(我的所有UI都在jqTabs中)最初作为没有服务器请求的客户端UI (所有内容将在稍后保存到db)但是我正在试图以编程方式操作摘要页脚并仅由客户端操作.任何人都可以建议如何在添加新行时更新摘要页脚的值,其中的值将与任何现有行相加,并且不涉及任何发布到服务器,只是网格内的更新?
提供的代码有点长,主要基于用户Oleg的解决方案,用于从模态表单添加行而不发布到服务器.我已经将本地数组数据更改为JSON字符串,以便更好地理解我习惯于xml的符号.jsonstring使用一个默认行初始化网格,供用户编辑.我遗漏了jsonReader,因为网格不会用它渲染.
简而言之,我想要做的是在向网格添加新行(此时没有发布到服务器)或编辑或删除时更新摘要页脚.当达到某组值时,显示的按钮会提示用户将行数据保存到db.
var lastSel, mydata = { "total": 1, "page": 1, "records": 1, "rows": [{ "id": acmid, "cell": ["0.00", "0.00", "0.00", "0.00"]}], "userdata":{ "mf": 0.00, "af":0.00,"pf":0.00,"cf":0.00 }}
grid = $("#ta_form_d"),
onclickSubmitLocal = function (options, postdata) {
var grid_p = grid[0].p,
idname = grid_p.prmNames.id,
grid_id = grid[0].id,
id_in_postdata = grid_id + "_id",
rowid = postdata[id_in_postdata],
addMode = rowid === "_empty",
oldValueOfSortColumn;
// postdata has row id property with another name. we fix it:
if (addMode) {
// …Run Code Online (Sandbox Code Playgroud)