我有这种情况:
一个数据库表A
,显示jqGrid
中的所有数据。
对于此表的一列,我有一个引用另一个数据库表B
的外键
我已经设定了A
和B
之间的关系,并且在jqGrid
中也表现得很完美。一切都很好。
问题是:
我有其他列是引用表B
的外键。但我需要的是显示B
引用其他表C
的另一个外键。我已经能够在jqGrid
中使用(严重)formatter: 'select'
显示结果并从PHP创建自定义数组来欺骗解决方案。
问题在于我可以看到数据,但由于实施不当,我无法过滤此列。
我使用Twig从PHP传递给jqGrid
数组。
我需要创建两个辅助数组,一个用于表A
的id列表,另一个用于表C
中的值。我通过这种方式关联了两个表格。
这是我的代码:
// colModel
{name:'<%identificator%>',
index:'table_A_id',
jsonmap:'table_A_id',
editable:true,
editrules:{ edithidden:true, required:true },
formoptions:{ elmsuffix:' (*)' },
edittype: 'select',
stype:'select',
formatter: 'select',
editoptions:{
value:":<%repeat%>;<%table_A_id%>:<%table_C_value%><%/repeat%>"
}
使用此代码,我在每个单元格中都有正确的结果,但在选择列表中没有正确的过滤。
恢复:我需要在表C
中显示表A
中的值,但两个表都没有关系,只能通过表B
。
有没有解决方案?
我使用jqGrid
的4.0.0版本,我不使用loadonce
属性。
答案 0 :(得分:0)
最后,我认为解决方案非常特别:
我通过以下方式通过JSON将数据传递给jqGrid:
// This is data from Table A(id, name, b_id)
{
"page":"1",
"total":122,
"records":3635,
"rows":[
{
"id":1,
"name":"example",
"b_id":8
},
{
"id":2,
"name":"example2",
"b_id":19
}]
}
所以我无法将表A和C联系起来,但最后我使用模型关系在PHP中完成了它:
// This is data from Table A(id, name, b_id) with relations
{
"page":"1",
"total":122,
"records":3635,
"rows":[
{
"id":1,
"name":"example",
"b_id":8,
"relations":{
"relation":{
"id":200,"name":"Pepe", "id_c":22
}
}
},
{
"id":2,
"name":"example2",
"b_id":19,
"relations":{
"relation":{
"id":356,"name":"Jose", "id_c":45
}
}
}]
}
jqGrid自动理解它,将正确的值放入index
和jsonmap
:
colModel:[ ...
, {
name:'Title',
index:'relation.id_c',
jsonmap:'relations.relation.id_c',
width: 40, editable:false
stype:'select', formatter:'select',
editoptions:{
value:"ids_C_table:values_C_table"
}
}
...]
通过这个实现,我得到了我需要的东西。单元格显示正确的数据,过滤器完美运行。
希望它有所帮助!