2017-06-06 65 views
0

jqGrid使用如下:的jqGrid用的fancybox - 让细胞对象

colModel: [ 
      {name:"",index:"",width:100}, 
      {name:"diagnosis",index:"diagnosis",width:100,formatter:fancyBoxFormatter}, 
      {name:"prescription", index:"prescription",width:100,formatter:fancyBoxFormatter}, 
      {name:"tests",index:"tests",width:100,formatter:fancyBoxFormatter}, 
      {name:"imaging",index:"imaging",width:100,formatter:fancyBoxFormatter}, 
      {name:"generic",index:"generic",width:100,formatter:fancyBoxFormatter}, 
      {name:"referral",index:"referral",width:100,formatter:fancyBoxFormatter}, 
      {name:"management",index:"management",width:100,formatter:fancyBoxFormatter}, 
      {name:"completed",index:"completed",width:100} 
      ], 

然后:

function fancyBoxFormatter(cellvalue, options, rowObject) { 

    var result, 
     link, 
     fancyBoxHTML, 
     fancyBoxContent; 

    link = "<a class=\"fancybox\" href=\"#data" + options.rowId + "\">" + cellvalue + "</a>"; 
    fancyBoxContent = cellvalue; 
    fancyBoxHTML = "<div style=\"display:none\"><div id=\"data" + options.rowId + "\">" + fancyBoxContent + "</div></div>"; 
    return link + fancyBoxHTML; 
} 

这显示的fancybox的行中的所有细胞相同的内容(基于ROWID。 ..)我怎样才能改变这个功能个人单元ID,而不是整个行?

+0

你能发布更多jqGrid的细节吗?你使用哪个**版本的jqGrid?您使用的jqGrid的哪个** fork **([免费jqGrid](https://github.com/free-jqgrid/jqGrid),商业[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334 )或版本<= 4.7中的旧jqGrid)?无论如何,对于forst列和格式化程序fancyBoxFormatter使用错误的值'name:“”'来生成带有id重复项的div,因为所有人都使用相同的'id'('“data”+ options.rowId')列。 – Oleg

回答

1

请有关jqGrid的所有问题的jqGrid的版本,您使用的(可以使用)和您使用的(free jqGrid,商业Guriddo jqGrid JS或旧的jqGrid在< = 4.7版本)编写。

定制格式化fancyBoxFormatteroptions参数包含rowIdcolModelgidposrowData性质(rowData只存在于游离的jqGrid叉)。因此,你可以使用,例如,

function fancyBoxFormatter (cellvalue, options) { 
    return "<a class=\"fancybox\" href=\"#data" + 
     options.rowId + "_" + options.colModel.name + "\">" + cellvalue + "</a>" + 
     "<div style=\"display:none\"><div id=\"data" + 
     options.rowId + "_" + options.colModel.name + "\">" + 
     cellvalue + "</div></div>"; 
} 

另外,你必须解决的第一列的name财产。不能使用空的name(请参阅name:"")。对于name,您可以使用的任何唯一值来保存HTML5/CSS中针对ID的规则(例如,无空格)。

我建议您另外删除不需要的index属性和常见的width:100选项从所有列。而不是在每列中放置width:100,您可以使用jqGrid的cmTemplate: {width: 100}选项。

+0

奥列格嗨,我使用的jqGrid Guriddo JS 5.2.1作为试验 – IlludiumPu36

+0

我已经更换了的fancybox功能与您的代码没有任何变化,并把在一个名称为第一列。我现在进入fancybox显示“请求的内容无法加载,请稍后再试。” – IlludiumPu36

+0

@ IlludiumPu36:请分享**演示**(例如JSFiddle),它会重现问题。我修复了我的答案中发布的代码,因为如果更改了'id',可能必须更改'href'值。顺便说一句,我的jqGrid发展,这是可以完全免费的MIT或在GPLv2许可下负责的[自由的jqGrid(https://github.com/free-jqgrid/jqGrid/)叉,并且将无法帮助你与古里多具体问题。 – Oleg