Yii2 Dynagrid:如何实现Sortable对行进行排序

时间:2016-06-13 08:11:50

标签: yii2

Dynagrid中,可以使用Sortable对列进行排序。我需要启用排序行,这应该类似:

enter image description here

有没有办法直接在Dynagrid中实现这样的排序,还是我必须单独编程排序?

1 个答案:

答案 0 :(得分:0)

启用排序很简单:

$('tbody').sortable();

唯一的问题是将排序保存到数据库中。我决定在views / sorted-table / index.php中单击按钮(而不是ajax)后保存它:

if (strpos(Url::current(), 'sort') === false) {
    $form = ActiveForm::begin([
        'id' => 'sort-form',
    ]);
    echo '<input type="hidden" id="field-sort" name="sort" value="">';
    if (isset($sortMessage) && $sortMessage != '') {
        echo '<p>' . $sortMessage . '</p>';
    }
    echo Html::submitButton(Icon::show('floppy-o') . 'Sortierung speichern', ['class' => 'btn btn-primary']);
    ActiveForm::end();

    DynagridSortAsset::register($this);
}

行的位置由jQuery保存在隐藏的输入字段中:

$('.btn-primary').mousedown(function() {
    var sorting = "";
    $('.sortable-row').each( function (index, value) {
        sorting += $(this).attr('data-id') + ':' + $(this).attr('data-sortierung') +',';
    });

    $('#field-sortierung').val(sorting);
});

然后在控制器中处理这些值并将其保存到数据库中。