我正在使用w2ui Grid的1.4.1版。我正在尝试使用inline edit从服务器加载数据时执行urls property。
$(function () {
$('#grid').w2grid({
name: 'grid',
// begin block that causes grid to be uneditable
// url: {
// get : '<?php echo site_url('sections')?>/all',
// save : '<?php echo site_url('sections')?>/save'
// },
// end block that causes grid to be eneditable
show: {
toolbar: true,
footer: true,
toolbarSave: true,
toolbarEdit: true
},
columns: [
{
field: 'code',
caption: 'Code',
size: '120px',
sortable: true,
resizable: true,
editable: {
type: 'text'
}
}
],
// this records array can be removed once the urls are added back
records: [
{ recid: 1, code: '100' }
]
});
});
如果我取消注释&#34; url&#34;阻止,&#34;代码&#34;双击时,网格上的字段不再可编辑。如果我删除它,它是。有没有人有一个从服务器动态加载数据的工作示例,同时还允许内联编辑?
ANSWER 如下所述,我的返回结构不正确。我在后端使用CodeIgniter(CI),我的控制器方法如下:
public function all() {
$data = $this->myModel->findAll ();
$gridData = new W2GridData ( $data );
echo $gridData->toJson(); //important to put "echo" here and not "return"
}
我的模型类中的findAll()方法是:
function findAll() {
$query = $this->db->get ( TABLE_NAME );
return $query->result ();
}
现在包含CI db结果的实用程序类是:
<?php
class W2GridData {
var $total = "-1";
var $records = "-1";
function __construct($items) {
$this->records = $items;
$this->total = count ( $this->records );
}
function toJson() {
$strValue = json_encode ( $this );
return str_replace ( "\"id\":", "\"recid\":", $strValue ); // this line was missing
}
}
正如你所看到的,我正在回归&#34; id&#34;直接来自数据库,而不是将其转换为w2ui的首选&#34; recid&#34;,因此网格无法正确呈现。
答案 0 :(得分:3)
我把你的代码完全取消了,取消注释了url并删除了记录。此外,我将它链接到一个静态JSON文件(如果你将它链接到返回JSON的php,应该没有什么不同)。但是,从服务器填充网格后,内联编辑工作正常。我使用的是1.4.1版本。我最好的猜测是(1)你在控制台中有一个javascript错误,或者(2)你的服务器没有返回正确的结构。这是我的JSON文件:
{
"total": "3",
"records": [{
"recid": 1,
"code": "Some"
}, {
"recid": 2,
"code": "Another"
}, {
"recid": 3,
"code": "More"
}]
}
答案 1 :(得分:-1)
我的简单方法是添加属性 recid:'id'
$('#grid').w2grid({
name: 'grid',
recid : 'id'
});