時間無いので、とりあえずソースコピペ。
これでjquerydatablesをつかいつつ xeditable で編集もできるようになる。
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.4/dt-1.10.15/datatables.min.css"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/jquery-editable/css/jquery-editable.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/jquery-editable/js/jquery-editable-poshytip.min.js"></script>
<style>
.editable-empty {
color: #666;
}
</style>
<? $this->start('script');//script or css?>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.4/dt-1.10.15/datatables.min.js"></script>
<script>
$(function () {
$.fn.editable.defaults.mode = 'inline';
// $.fn.editableform.template = '<form class="form-inline editableform"><div class="control-group"><div><div class="editable-input"></div><div class="editable-buttons"></div></div><div class="editable-error-block"></div></div></form>';
$.fn.editableform.buttons ='<button type="submit" class="editable-submit"><i class="fa fa-check" aria-hidden="true"></i></button>';
var list = [
"たろう",
"じろう",
"さぶろう",
"はなこ"
];
var url = "/writers/getAjaxFollower/";
// 日本語化
$.extend( $.fn.dataTable.defaults, {
language: {
url: "https://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Japanese.json"
}
});
table = $("#foo-table").DataTable({
rowId: 'id',//tr ごとに row にIDをつける
ajax: {
url: url,
dataSrc: function ( json ) {
//ここで形式などを変更することも可能。for文でリンクをつけたりとか。
// $.each(json,
// function(i, v) {
// console.log(v);
//
// if(){
//
// }
//
// }
// );
return json.customers;//json形式がおかしいので、わざわざ指定しておく
}
},
columns: [
{ data: "dummy" },
{ data: "id" },
{ data: "name" },
{ data: "kyoka_count" },
{
data: "memo",render:function(data){
return data;
}
},
{
data: "work_id",render:function(data){
return list[data];
}
},
{ data: "tanka" },
{ data: "shiharai_kiji_count" },
{ data: "mikankin" },
]
,
columnDefs: [
{
className: "id", "targets": [ 1 ]//tdに名前をつける
},
{
className: "memo", "targets": [ 4 ]//tdに名前をつける
},
{
className: "work_id", "targets": [ 5 ]//tdに名前をつける
},
{
className: "tanka", "targets": [ 6 ]//tdに名前をつける
},
{
className: "shiharai_kiji_count", "targets": [ 7 ]//tdに名前をつける
}
]
,
drawCallback: function( settings ) {
// ajaxターゲットにするURLを指定
url = "/writers/mange/";
// xeditableの前に id をつけていく
$.each($("#foo-table td"),
function(i, v) {
tmp_pk = $(this).closest($('tr')).attr('id');
$(this).attr('data-pk',tmp_pk);
}
);
$('td.memo').editable({
type: 'textarea',
emptytext: '-',
url: url
});
$('td.work_id').editable({
type : 'select',
showbuttons: false,
url: url,
source : [
{value: 'yes', text: 'はい' },
{value: 'no' , text: 'いいえ'}
],
prepend : '- 選択 -' // テキストが空っぽの時に表示させる文字。(入力モード時)
});
$('td.tanka').editable({
url: url
});
$('td.shiharai_kiji_count').editable(
{
url: url
}
);
}
});
});
</script>
<? $this->end(); ?>
<table id="foo-table" class="table table-bordered">
<thead>
<tr>
<th>
<i class="fa fa-gear"></i>
</th>
<th>ID</th>
<th>フォロワー</th>
<th><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>許可数</th>
<th><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>メモ</th>
<th><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>雇用</th>
<th><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>単価</th>
<th><i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>依頼数</th>
<th>未払い記事</th>
</tr>
</thead>
</table>