jqwidgets-framework
Version:
jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.
85 lines (84 loc) • 4.72 kB
HTML
<html ng-app="demoApp" lang="en">
<head>
<title id="Description">AngularJS DataTable with Custom Editor. The first column's editor is jqxInput created from jqx-input tag.</title>
<script type="text/javascript" src="../../scripts/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="../../scripts/angular.min.js"></script>
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
<script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxinput.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxdatatable.js"></script>
<script type="text/javascript" src="../../jqwidgets/jqxangular.js"></script>
<script type="text/javascript" src="../sampledata/generatedata.js"></script>
<script type="text/javascript" src="../../scripts/demos.js"></script>
<script type="text/javascript">
var demoApp = angular.module("demoApp", ["jqwidgets"]);
demoApp.controller("demoController", function ($scope) {
var dataTable;
$scope.data = generatedata(85);
$scope.editorData = ['Andrew', 'Martin', 'Peter', 'Yoshi', 'Petra', 'Nancy', 'Beate', 'Antoni', 'Lars', 'Shelley'];
$scope.dataTableSettings =
{
source: {
localdata: $scope.data,
datatype: "array",
datafields:
[
{ name: 'firstname', type: 'string' },
{ name: 'lastname', type: 'string' },
{ name: 'productname', type: 'string' },
{ name: 'quantity', type: 'number' },
{ name: 'price', type: 'number' },
{ name: 'total', type: 'number' }
],
sortcolumn: 'firstname',
sortdirection: 'asc'
},
pageable: true,
altRows: true,
width: 650,
editable: true,
created: function(args)
{
dataTable = args.instance;
},
columns: [
{
text: 'First Name', columntype: 'template', datafield: 'firstname', width: 180, createEditor: function (row, cellvalue, editor, cellText, width, height) {
// construct the editor.
var inputElement = "<jqx-input jqx-source=editorData jqx-height=" + height + " jqx-width=" + width + " style='padding-left: 4px; border: none;'></jqx-input>"
editor.html(inputElement);
// compile the Editor.
$.jqx.angularCompile(editor);
},
initEditor: function (row, cellvalue, editor, celltext, width, height) {
// set the editor's current value. The callback is called each time the editor is displayed.
var inputField = editor.find('input');
inputField.val(cellvalue);
setTimeout(function () {
inputField.focus();
}, 100);
},
getEditorValue: function (row, cellvalue, editor) {
// return the editor's value.
return editor.find('input').val();
}
},
{ text: 'Last Name', dataField: 'lastname', width: 200 },
{ text: 'Product', editable: false, dataField: 'productname', width: 180 },
{ text: 'Quantity', dataField: 'quantity', width: 80, align: 'right', cellsalign: 'right' },
{ text: 'Unit Price', dataField: 'price', align: 'right', cellsalign: 'right', cellsFormat: 'c2' }
]
};
});
</script>
</head>
<body ng-controller="demoController">
<jqx-data-table jqx-settings="dataTableSettings"></jqx-data-table>
</body>
</html>