The List component provides the possibility to navigate its items with arrow keys. You can enable this functionality using the keyNavigation property:
var list = new dhx.List("list", {keyNavigation:true});
As a value of this option you can use either true/false to switch it on/off, or specify a function that will define some custom navigation logic.
ArrowUp | to move focus to the previous item |
ArrowDown | to move focus to the next item |
Enter/Shift+Enter/Ctrl+Enter | to add selection to a List item in focus |
Ctrl+A | to select all items at once (when the "multiselection" property is enabled) |
dhtmlxList supports drag-n-drop of items between lists in several modes. To begin with, you should specify the dragMode property in the configuration object of List. Then define which mode you need:
var list = new dhx.List("list_container", {
dragMode:"source"
});
In order to provide the possiblity of dragging several items between lists, you should enable the multiselection in addition to the dragMode:
var list = new dhx.List("list_container", {
dragMode:"source",
multiselection:true
});
Read more about multiselection in List below.
Related sample: List. Setup Drag Mode
All data is loaded into List and rendered at once. In case you use large amounts of data in the list, it may slow down the work of your app.
There is a possibility to increase the speed of your application containing a List by enabling dynamic data rendering. It presupposes that data is rendered by parts and on demand. To make use of dynamic data rendering, switch the virtual property on.
var list = new dhx.List("list_container", {
virtual:true
});
Related sample: List. Virtual List
Related sample: List. Editable List
You can enable the possibility to edit List items with the help of the editable configuration option:
var list = new dhx.List("list_container", {editable:true});
Related sample: List. Setup List Item Height
You can specify the necessary height of an item and set it before initialization of List via the itemHeight property either as a number:
// sets the height of an item as a number
var list = new dhx.List("list_container", {
itemHeight:30 });
or as a string value
// sets the height of an item as a string value
var list = new dhx.List("list_container", {
itemHeight:"30px" });
The usage of the CSS calc() function within the itemHeight property is not possible.
When the virtual property is set to true, the default height of a list item is 37. To change this value, make use of the itemHeight property, as described above.
Related sample: List. Setup List Height
You can define the desired height of a list via the height configuration option as easy as that:
var list = new dhx.List("list", {height: 700});
You can also use a string value for setting the height of List:
var list = new dhx.List("list", {height: "700px"});
The usage of the CSS calc() function within the height property is not possible.
Related sample: List. List Multiselection
By default, you can select only one item in a list, since selection of another item resets selection of the previous one. To enable the possibility to select several List items, make use of the multiselection configuration option:
var list = new dhx.List("list", {multiselection:true});
Setting the multiselection property to true presupposes selection of multiple items by using Ctrl key. It is also possible to use the "Ctrl+click" combination to select several items. For this, you need to set the multiselection configuration option to "ctrlClick":
var list = new dhx.List("list", {
multiselection:"ctrlClick"
});
Related sample: Disable Selection - DHTMLX List
The default configuration of List provides you with the selection feature that allows highlighting a List item. To disable selection in a List you need to set the selection configuration property to false:
var list = new dhx.List("list_container", {selection: false});
Related sample: List. Add Template To List Item
You can define a template for rendering items in a List with the help of the template configuration property. Set as its value a function that takes one parameter:
var list = new dhx.List("list", {
css: "dhx_widget--bordered",
template: function(item) {
var template = "<div class='list_item'>";
template += "<div class='item_name'>"+item.value;
template+="<span class='item_author'> by "
template += item.authors.filter(function(item){return item}).join(", ");
template += item.publishedDate ? ", "
template += new Date(item.publishedDate.$date).getFullYear() : "";
template += "</span>";
template += "</div>";
template += "<div class='item_categories'>"+item.categories.join(", ")+"</div>";
template += "</div>";
return template;
},
itemHeight: 72
});
Starting from v7.0, it is possible to assign event handlers to HTML elements of a custom template of List items by using the eventHandlers configuration option:
function template(item) {
let template = "<div class='list_item'>";
template += "<div class='item_name'>"+item.value;
template +="<span class='item_author'> by "
template += item.authors.filter(function(item){return item}).join(", ");
template += item.publishedDate ? ", "
template += new Date(item.publishedDate.$date).getFullYear() : "";
template += "</span>";
template += "</div>";
template += "<span class='item_categories'>"+item.categories.join(", ")+"</span>";
template += "</div>";
return template;
}
const list = new dhx.List("list", {
css: "dhx_widget--bordered",
template: template,
eventHandlers: { onclick: { list_item: function(event) { display("You clicked on " + event.target.tagName); }, }, onmouseover: { list_item: function(event, id) { display(list.data.getItem(id).value); }, } } });
Related sample: Handling events in template - DHTMLX List
The eventHandlers object includes a set of key:value pairs, where:
key | the name of the event. Note, that at the beginning of the event name the 'on' prefix is used (onclick, onmouseover). |
value | an object that contains a key:value pair, where key is the css class name that the handler will be applied to and value is a function that takes two parameters:
|