jQuery EasyUI: плагин таблицы данных и дерева -Datagrid: таблица данных


jQuery EasyUI 插件jQuery EasyUI Плагины

Наследуется от $.fn.panel.defaults. Переопределите значения по умолчанию с помощью $.fn.datagrid.defaults.

Datagrid отображает данные в табличном формате и предоставляет широкие возможности для выбора, сортировки, группировки и редактирования данных. Datagrid создан для сокращения времени разработки и не требует от разработчиков специальных знаний. Он лёгкий, но многофункциональный. Его возможности включают объединение ячеек, многоуровневые заголовки, закреплённые столбцы, нижние колонтитулы и многое другое.

Зависимости

  • panel
  • resizable
  • linkbutton
  • pagination

Использование

Создайте datagrid из существующего элемента таблицы, определив столбцы, строки и данные в HTML.

<table class="easyui-datagrid">
    <thead>
        <tr>
            <th data-options="field:'code'">Code</th>
            <th data-options="field:'name'">Name</th>
            <th data-options="field:'price'">Price</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>001</td><td>name1</td><td>2323</td>
        </tr>
        <tr>
            <td>002</td><td>name2</td><td>4612</td>
        </tr>
    </tbody>
</table>

Создайте datagrid с помощью разметки <table>. Вложенные теги <th> определяют столбцы в таблице.

<table class="easyui-datagrid" style="width:400px;height:250px"
    data-options="url:'datagrid_data.json',fitColumns:true,singleSelect:true">
    <thead>
        <tr>
            <th data-options="field:'code',width:100">Code</th>
            <th data-options="field:'name',width:100">Name</th>
            <th data-options="field:'price',width:100,align:'right'">Price</th>
        </tr>
    </thead>
</table>

Вы также можете создать datagrid с помощью JavaScript.

<table id="dg"></table>
$('#dg').datagrid({
    url:'datagrid_data.json',
    columns:[[
        {field:'code',title:'Code',width:100},
        {field:'name',title:'Name',width:100},
        {field:'price',title:'Price',width:100,align:'right'}
    ]]
});

Запрашивайте данные с помощью некоторых параметров.

$('#dg').datagrid('load', {
    name: 'easyui',
    address: 'ho'
});

После отправки изменённых данных на сервер обновите данные фронтенда.

$('#dg').datagrid('reload');    // reload the current page data

Свойства DataGrid

Свойства наследуются от panel. Ниже перечислены свойства, добавленные для datagrid.

Name Type Описание Значение по умолчанию
columns array Объект конфигурации для столбцов datagrid. Подробнее см. в свойствах Column. undefined
frozenColumns array То же, что и свойства Column, но эти столбцы будут зафиксированы слева. undefined
fitColumns логическое значение Если установлено значение true, размер столбца будет автоматически увеличиваться или уменьшаться, чтобы соответствовать ширине сетки и предотвращать горизонтальную прокрутку. false
resizeHandle string Настраивает положение столбцов. Доступные значения: 'left', 'right', 'both'. Если установлено 'right', пользователь может изменять размер столбца, перетаскивая правый край заголовка столбца.
Это свойство доступно начиная с версии 1.3.2.
right
autoRowHeight логическое значение Определяет, устанавливать ли высоту строки на основе содержимого строки. Установите false, чтобы улучшить производительность загрузки. истина
toolbar массив, селектор Панель инструментов заголовка панели datagrid. Возможные значения:
1. Массив, каждая опция инструмента такая же, как у linkbutton.
2. Селектор, просто панель инструментов.

Определите панель инструментов внутри тега <div>:
$('#dg').datagrid({
    toolbar: '#tb'
});
<div id="tb">
<a href="../index.html" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true"></a>
<a href="../index.html" class="easyui-linkbutton" data-options="iconCls:'icon-help',plain:true"></a>
</div>
Определите панель инструментов через массив:
$('#dg').datagrid({
    toolbar: [{
        iconCls: 'icon-edit',
        handler: function(){alert('edit')}
    },'-',{
        iconCls: 'icon-help',
        handler: function(){alert('help')}
    }]
});
null
striped логическое значение Если установлено значение true, строки будут полосатыми. (т.е. нечетные и четные строки используют разные цвета фона) false
method string Тип метода для запроса удаленных данных. post
nowrap логическое значение Если установлено значение true, данные будут отображаться в одной строке. Установите значение true для повышения производительности загрузки. истина
idField string Указывает, какое поле является полем идентификатора. null
url string URL для запроса данных с удаленного сайта. null
data array,object Данные для загрузки. Это свойство доступно начиная с версии 1.3.2.
Пример кода:
$('#dg').datagrid({
    data: [
        {f1:'value11', f2:'value12'},
        {f1:'value21', f2:'value22'}
    ]
});
null
loadMsg string Сообщение-подсказка, отображаемое во время загрузки данных с удаленного сайта. Обработка, пожалуйста, подождите …
pagination логическое значение Если установлено значение true, панель постраничной навигации будет отображаться в нижней части таблицы данных. false
rownumbers логическое значение Если установлено значение true, будет отображён столбец с номерами строк. false
singleSelect логическое значение Если установлено значение true, можно выбрать только одну строку. false
checkOnSelect логическое значение Если установлено значение true, при щелчке пользователя по строке флажок будет установлен/снят. Если установлено значение false, флажок будет установлен/снят только когда пользователь щёлкает по флажку.
Это свойство доступно начиная с версии 1.3.
истина
selectOnCheck логическое значение Если установлено значение true, щелчок по флажку выберет строку. Если установлено значение false, выбор строки не установит флажок.
Это свойство доступно начиная с версии 1.3.
истина
pagePosition string Определяет позицию панели постраничной навигации. Доступные значения: 'top', 'bottom', 'both'.
Это свойство доступно начиная с версии 1.3.
bottom
pageNumber число Начальный номер страницы, когда задано свойство pagination. 1
pageSize число Начальный размер страницы, когда задано свойство pagination. 10
pageList array Список размеров страницы для выбора, когда задано свойство pagination. [10,20,30,40,50]
queryParams объект Дополнительные параметры, отправляемые при запросе удалённых данных.
Пример кода:
$('#dg').datagrid({
    queryParams: {
        name: 'easyui',
        subject: 'datagrid'
    }
});
{}
sortName string Определяет столбцы, которые можно сортировать. null
sortOrder string Определяет порядок сортировки столбца; можно использовать только 'asc' или 'desc'. asc
multiSort логическое значение Определяет, включать ли сортировку по нескольким столбцам. Это свойство доступно начиная с версии 1.3.4. false
remoteSort логическое значение Определяет, сортировать ли данные с сервера. истина
showHeader логическое значение Определяет, отображать ли заголовок. истина
showFooter логическое значение Определяет, отображать ли нижний колонтитул. false
scrollbarSize число Ширина полосы прокрутки (когда полоса прокрутки вертикальная) или высота полосы прокрутки (когда полоса прокрутки горизонтальная). 18
rowStyler функция Возвращает стиль, например 'background:red'. Эта функция принимает два параметра:
rowIndex: Индекс строки, начиная с 0.
rowData: Соответствующая запись этой строки.

Пример кода:
$('#dg').datagrid({
    rowStyler: function(index,row){
        if (row.listprice>80){
            return 'background-color:#6293BB;color:#fff;'; // return inline style
            // the function can return predefined css class and inline style
            // return {class:'r1', style:{'color:#fff'}};    
        }
    }
});
loader функция Определяет, как загружать данные с удаленного сервера. Возврат false отменяет действие. Эта функция имеет следующие параметры:
param: Объект параметров, который будет передан удаленному серверу.
success(data): Функция обратного вызова, вызываемая при успешном получении данных.
error(): Функция обратного вызова, вызываемая при сбое получения данных.
загрузчик JSON
loadFilter функция Возвращает отфильтрованные данные для отображения. Эта функция имеет параметр 'data', который представляет исходные данные. Вы можете преобразовать исходные данные в стандартный формат данных. Эта функция должна возвращать стандартный объект данных, содержащий свойства 'total' и 'rows'.
Пример кода:
// removing 'd' object from asp.net web service json output
$('#dg').datagrid({
    loadFilter: function(data){
        if (data.d){
            return data.d;
        } else {
            return data;
        }
    }
});
editors объект Определяет редактор при редактировании строк. предопределенные редакторы
представление объект Определяет представление datagrid. представление по умолчанию

Свойства столбца

Столбец DataGrid — это объект-массив, каждый его элемент также является массивом. Элементы вложенного массива — это объект конфигурации, определяющий поля каждого столбца.

Пример кода:

columns:[[
    {field:'itemid',title:'Item ID',rowspan:2,width:80,sortable:true},
    {field:'productid',title:'Product ID',rowspan:2,width:80,sortable:true},
    {title:'Item Details',colspan:4}
],[
    {field:'listprice',title:'List Price',width:80,align:'right',sortable:true},
    {field:'unitcost',title:'Unit Cost',width:80,align:'right',sortable:true},
    {field:'attr1',title:'Attribute',width:100},
    {field:'status',title:'Status',width:60}
]]
Name Type Описание Значение по умолчанию
title string Текст заголовка столбца. undefined
поле string Имя поля столбца. undefined
width число Ширина столбца. Если она не задана, ширина автоматически расширяется, чтобы соответствовать содержимому. Если ширина не определена, производительность снижается. undefined
rowspan число Указывает, на сколько строк растягивается ячейка. undefined
colspan число Указывает, на сколько столбцов растягивается ячейка. undefined
align string Указывает, как выравнивать данные этого столбца. Возможные значения: 'left', 'right', 'center'. undefined
halign string Указывает, как выравнивать заголовок этого столбца. Возможные значения: 'left', 'right', 'center'. Если значение не задано, выравнивание заголовка будет соответствовать выравниванию данных, заданному свойством 'align'. Это свойство доступно начиная с версии 1.3.2. undefined
sortable логическое значение Если задано true, этот столбец можно сортировать. undefined
order string Порядок сортировки по умолчанию, можно использовать только 'asc' или 'desc'. Это свойство доступно начиная с версии 1.3.2. undefined
resizable логическое значение Если задано true, этот столбец можно изменять по ширине. undefined
fixed логическое значение Если задано true, это предотвращает изменение ширины, когда 'fitColumns' имеет значение true. undefined
hidden логическое значение Если задано true, скрывает этот столбец. undefined
checkbox логическое значение Если задано true, отображается флажок. Флажок имеет фиксированную ширину. undefined
formatter функция Функция форматирования для ячейки, требующая три параметра:
value: Значение поля.
rowData: Данные записи строки.
rowIndex: Индекс строки.

Пример кода:
$('#dg').datagrid({
    columns:[[
        {field:'userId',title:'User', width:80,
            formatter: function(value,row,index){
                if (row.user){
                    return row.user.name;
                } else {
                    return value;
                }
            }
        }
    ]]
});
undefined
styler функция Функция style для ячейки, возвращает строку стиля для настройки стиля ячейки, например, 'background:red'. Эта функция принимает три параметра:
value: Значение поля.
rowData: Данные записи строки.
rowIndex: Индекс строки.

Пример кода:
$('#dg').datagrid({
    columns:[[
        {field:'listprice',title:'List Price', width:80, align:'right',
            styler: function(value,row,index){
                if (value < 20){
                    return 'background-color:#FFEE00;color:red;';
                    // the function can return predefined css class and inline style
                    // return {class:'c1',style:'color:red'}
                }
            }
        }
    ]]
});
undefined
sorter функция Функция сортировки для настраиваемых полей, используемая для локальной сортировки, принимает два параметра:
a: значение первого поля.
b: значение второго поля.

Пример кода:
$('#dg').datagrid({
    remoteSort: false,
    columns: [[
        {field:'date',title:'Date',width:80,sortable:true,align:'center',  
            sorter:function(a,b){  
                a = a.split('/');  
                b = b.split('/');  
                if (a[2] == b[2]){  
                    if (a[0] == b[0]){  
                        return (a[1]>b[1]?1:-1);  
                    } else {  
                        return (a[0]>b[0]?1:-1);  
                    }  
                } else {  
                    return (a[2]>b[2]?1:-1);  
                }  
            }  
        }
    ]]
});
undefined
editor string,object Указывает тип редактирования. Если это строка, она обозначает тип редактирования; если это объект, он содержит два свойства:
type: string, тип редактирования. Возможные типы: text, textarea, checkbox, numberbox, validatebox, datebox, combobox, combotree.
options: object, параметры редактора, соответствующие типу редактирования.
undefined

Редактор

Переопределите значения по умолчанию с помощью $.fn.datagrid.defaults.editors.

Каждый редактор имеет следующее поведение:

Name Parameters Описание
init container, options Инициализировать редактор и вернуть целевой объект.
destroy target Уничтожить редактор при необходимости.
getValue target Получить значение из текста редактора.
setValue target , value Установить значение в редактор.
resize target , width Изменить размер редактора при необходимости.

Например, текстовый редактор определяется следующим образом:

$.extend($.fn.datagrid.defaults.editors, {
    text: {
        init: function(container, options){
            var input = $('<input type="text" class="datagrid-editable-input">').appendTo(container);
            return input;
        },
        destroy: function(target){
            $(target).remove();
        },
        getValue: function(target){
            return $(target).val();
        },
        setValue: function(target, value){
            $(target).val(value);
        },
        resize: function(target, width){
            $(target)._outerWidth(width);
        }
    }
});

Представление DataGrid

Переопределите значения по умолчанию через $.fn.datagrid.defaults.view.

Представление — это объект, который сообщает datagrid, как отображать строки. Этот объект должен определять следующие функции:

Name Parameters Описание
render target, container, frozen Вызывается при загрузке данных.
target: DOM-объект, объект datagrid.
container: контейнер строк.
frozen: указывает, следует ли отображать замороженный контейнер.
renderFooter target, container, frozen Это функция параметров для отображения нижнего колонтитула.
renderRow target, fields, frozen, rowIndex, rowData Это функция параметров, которая будет вызвана функцией render.
refreshRow target, rowIndex Определяет, как обновлять указанные строки.
onBeforeRender target, rows Срабатывает перед отрисовкой представления.
onAfterRender target Срабатывает после отрисовки представления.

Events

Эти события наследуются от панели. Ниже перечислены события, добавленные для таблицы данных.

Name Parameters Описание
onLoadSuccess data Срабатывает при успешной загрузке данных.
onLoadError none Срабатывает при возникновении ошибок во время загрузки удалённых данных.
onBeforeLoad param Срабатывает перед отправкой запроса на загрузку данных. Если возвращается false, действие загрузки будет отменено.
onClickRow rowIndex, rowData Срабатывает, когда пользователь щелкает строку. Параметры включают:
rowIndex: индекс щелкнутой строки, начиная с 0.
rowData: запись, соответствующая щелкнутой строке.
onDblClickRow rowIndex, rowData Срабатывает, когда пользователь дважды щелкает строку. Параметры включают:
rowIndex: индекс строки, по которой дважды щелкнули, начиная с 0.
rowData: запись, соответствующая строке, по которой дважды щелкнули.
onClickCell rowIndex, field, value Срабатывает, когда пользователь щёлкает по ячейке.
onDblClickCell rowIndex, field, value Срабатывает, когда пользователь дважды щёлкает по ячейке.
Пример кода:
// when double click a cell, begin editing and make the editor get focus
$('#dg').datagrid({
    onDblClickCell: function(index,field,value){
        $(this).datagrid('beginEdit', index);
        var ed = $(this).datagrid('getEditor', {index:index,field:field});
        $(ed.target).focus();
    }
});
onSortColumn sort, order Срабатывает, когда пользователь сортирует столбец. Параметры включают:
sort: имя поля сортируемого столбца.
order: порядок сортируемого столбца.
onResizeColumn field, width Срабатывает, когда пользователь изменяет размер столбца.
onSelect rowIndex, rowData Срабатывает, когда пользователь выбирает строку. Параметры включают:
rowIndex: индекс выбранной строки, начиная с 0.
rowData: запись, соответствующая выбранной строке.
onUnselect rowIndex, rowData Срабатывает, когда пользователь отменяет выбор строки. Параметры включают:
rowIndex: индекс строки, с которой снято выделение, начиная с 0.
rowData: запись, соответствующая строке, с которой снято выделение.
onSelectAll rows Срабатывает, когда пользователь выбирает все строки.
onUnselectAll rows Срабатывает, когда пользователь снимает выделение со всех строк.
onCheck rowIndex,rowData Срабатывает, когда пользователь отмечает строку. Параметры включают:
rowIndex: индекс отмеченной строки, начиная с 0.
rowData: запись, соответствующая отмеченной строке.
Это событие доступно начиная с версии 1.3.
onUncheck rowIndex,rowData Срабатывает, когда пользователь снимает отметку со строки. Параметры включают:
rowIndex: индекс строки, с которой снята отметка, начиная с 0.
rowData: запись, соответствующая строке, с которой снята отметка.
Это событие доступно начиная с версии 1.3.
onCheckAll rows Срабатывает, когда пользователь отмечает все строки. Это событие доступно начиная с версии 1.3.
onUncheckAll rows Срабатывает, когда пользователь снимает флажки со всех строк. Это событие доступно начиная с версии 1.3.
onBeforeEdit rowIndex, rowData Срабатывает, когда пользователь начинает редактирование строки. Параметры включают:
rowIndex: индекс редактируемой строки, начиная с 0.
rowData: запись, соответствующая редактируемой строке.
onAfterEdit rowIndex, rowData, changes Срабатывает, когда пользователь завершает редактирование строки. Параметры включают:
rowIndex: индекс отредактированной строки, начиная с 0.
rowData: запись, соответствующая отредактированной строке.
changes: изменённые пары поле/значение.
onCancelEdit rowIndex, rowData Срабатывает, когда пользователь отменяет редактирование строки. Параметры включают:
rowIndex: индекс редактируемой строки, начиная с 0.
rowData: запись, соответствующая редактируемой строке.
onHeaderContextMenu e, field Срабатывает при щелчке правой кнопкой мыши по заголовку datagrid.
onRowContextMenu e, rowIndex, rowData Срабатывает при щелчке правой кнопкой мыши по строке.

Методы

Name Parameters Описание
options none Возвращает объект options.
getPager none Возвращает объект pager.
getPanel none Возвращает объект панели.
getColumnFields frozen Возвращает поля столбцов. Если frozen имеет значение true, возвращаются поля замороженных столбцов.
Пример кода:
var opts = $('#dg').datagrid('getColumnFields');    // get unfrozen columns
var opts = $('#dg').datagrid('getColumnFields', true); // get frozen columns
getColumnOption поле Возвращает параметры указанного столбца.
resize param Изменить размер и выполнить компоновку.
load param Загружает и отображает строки первой страницы. Если указан параметр 'param', он заменит свойство queryParams. Обычно, передавая некоторые параметры запроса, этот метод вызывается для загрузки новых данных с сервера.
$('#dg').datagrid('load',{
    code: '01',
    name: 'name01'
});
reload param Перезагружает строки, так же как метод load, но остается на текущей странице.
reloadFooter footer Перезагружает строки нижнего колонтитула. Пример кода:
// update footer row values and then refresh
var rows = $('#dg').datagrid('getFooterRows');
rows[0]['name'] = 'new name';
rows[0]['salary'] = 60000;
$('#dg').datagrid('reloadFooter');

// update footer rows with new data
$('#dg').datagrid('reloadFooter',[
    {name: 'name1', salary: 60000},
    {name: 'name2', salary: 65000}
]);
loading none Показать состояние загрузки.
loaded none Скрыть состояние загрузки.
fitColumns none Сделать так, чтобы столбцы автоматически расширялись/сворачивались по ширине datagrid.
fixColumnSize поле Зафиксировать размеры столбцов. Если параметр 'field' не задан, размеры всех столбцов будут зафиксированы.
Пример кода:
$('#dg').datagrid('fixColumnSize', 'name');  // fix the 'name' column size
$('#dg').datagrid('fixColumnSize');  // fix all columns size
fixRowHeight index Зафиксировать высоту указанной строки. Если параметр 'index' не задан, высоты всех строк будут зафиксированы.
freezeRow index Зафиксировать указанные строки, чтобы эти зафиксированные строки всегда отображались сверху при прокрутке datagrid вниз. Этот метод доступен начиная с версии 1.3.2.
autoSizeColumn поле Отрегулировать ширину столбца по содержимому. Этот метод доступен начиная с версии 1.3.
loadData data Загрузить локальные данные, старые строки будут удалены.
getData none Возвращает загруженные данные.
getRows none Возвращает строки текущей страницы.
getFooterRows none Возвращает строки нижнего колонтитула.
getRowIndex row Возвращает индекс указанной строки. Параметр row может быть записью строки или значением поля id.
getChecked none Возвращает все строки, выбранные с помощью флажка. Этот метод доступен начиная с версии 1.3.
getSelected none Возвращает первую выбранную строку или null.
getSelections none Возвращает все выбранные строки. Если выбранных записей нет, будет возвращён пустой массив.
clearSelections none Очистить все выделения.
clearChecked none Очистить все отмеченные строки. Этот метод доступен начиная с версии 1.3.2.
scrollTo index Прокрутить к указанной строке. Этот метод доступен начиная с версии 1.3.3.
highlightRow index Подсветить строку. Этот метод доступен начиная с версии 1.3.3.
selectAll none Выбрать все строки на текущей странице.
unselectAll none Снять выделение со всех строк на текущей странице.
selectRow index Выбрать строку, индекс строки начинается с 0.
selectRecord idValue Выбрать строку, передав значение id в качестве параметра.
unselectRow index Снять выделение со строки.
checkAll none Установить флажки для всех строк на текущей странице. Этот метод доступен начиная с версии 1.3.
uncheckAll none Снять флажки со всех строк на текущей странице. Этот метод доступен начиная с версии 1.3.
checkRow index Отметить строку; индекс строки начинается с 0. Этот метод доступен начиная с версии 1.3.
uncheckRow index Снять отметку со строки; индекс строки начинается с 0. Этот метод доступен начиная с версии 1.3.
beginEdit index Начать редактирование строки.
endEdit index Завершить редактирование строки.
cancelEdit index Отменить редактирование строки.
getEditors index Получить редактор указанной строки. Каждый редактор имеет следующие свойства:
actions: Действия, которые может выполнять редактор, такие же, как в определении редактора.
target: Объект jQuery целевого редактора.
field: Имя поля.
type: тип редактора, например 'text', 'combobox', 'datebox' и т. д.
getEditor options Получить указанный редактор, параметр options содержит два свойства:
index: индекс строки.
field: имя поля.

Пример кода:
// get the datebox editor and change its value
var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
$(ed.target).datebox('setValue', '5/4/2012');
refreshRow index Обновить строку.
validateRow index Проверить указанную строку, возвращает true, если она корректна.
updateRow param Обновить указанную строку; параметр param включает следующие свойства:
index: индекс строки для обновления.
row: данные новой строки.

Пример кода:
$('#dg').datagrid('updateRow',{
    index: 2,
    row: {
        name: 'new name',
        note: 'new note message'
    }
});
appendRow row Добавить новую строку. Новая строка будет добавлена в конец:
$('#dg').datagrid('appendRow',{
    name: 'new name',
    age: 30,
    note: 'some messages'
});
insertRow param Вставить новую строку; параметр param включает следующие свойства:
index: индекс вставляемой строки; если не указан, новая строка добавляется в конец.
row: данные строки.

Пример кода:
// insert a new row at second row position
$('#dg').datagrid('insertRow',{
    index: 1,    // index start with 0
    row: {
        name: 'new name',
        age: 30,
        note: 'some messages'
    }
});
deleteRow index Удалить строку.
getChanges type Получить строки, изменённые с момента последней фиксации; параметр type указывает тип изменённых строк, возможные значения: inserted, deleted, updated и т.д. Если параметр type не задан, возвращаются все изменённые строки.
acceptChanges none Зафиксировать все изменения, сделанные с момента загрузки или последнего вызова acceptChanges.
rejectChanges none Откатить все изменения, сделанные с момента создания или последнего вызова acceptChanges.
mergeCells options Объединить несколько ячеек в одну; параметр options включает следующие свойства:
index: индекс столбца.
field: имя поля.
rowspan: количество строк, охватываемых объединением.
colspan: количество столбцов, охватываемых объединением.
showColumn поле Показать указанный столбец.
hideColumn поле Скрыть указанный столбец.

jQuery EasyUI 插件Плагины jQuery EasyUI Другие расширения