rogel
July 11, 2011, 3:50pm
1
Hi!
I would like to display the table columns and the data type in a blank form. I created a 2 text fields(1 for the column and 1 for the type) with no datasource and created this code in onShow event. I am stuck after retrieving the table columns.
var jsTable = databaseManager.getTable('udm', 'campaigns')
var columnNames = jsTable.getColumnNames()
Thanks!
Joas
July 12, 2011, 7:05am
2
This should work:
function onShow(firstShow, event) {
if (firstShow) {
var jsTable = databaseManager.getTable('udm', 'campaigns');
var columnNames = jsTable.getColumnNames();
var _dataset = databaseManager.createEmptyDataSet(0,["column_name", "column_type"]);
var _jsColumn;
for (var i = 0; i < columnNames.length; i++) {
_jsColumn = jsTable.getColumn(columnNames[i]);
_dataset.addRow([columnNames[i], _jsColumn.getTypeAsString()]);
}
var _dataSource = _dataset.createDataSource("columns", [JSColumn.TEXT, JSColumn.TEXT]);
var _jsForm = solutionModel.getForm(controller.getName());
_jsForm.dataSource = _dataSource;
var _fields = _jsForm.getFields();
_fields[0].dataProviderID = "column_name";
_fields[1].dataProviderID = "column_type";
controller.recreateUI();
controller.loadAllRecords();
}
}
Note that this code is a little unsafe, because I don’t check if the fields really are there. But it will get you started.
rogel
July 12, 2011, 10:42am
3
Joas:
This should work:
function onShow(firstShow, event) {
if (firstShow) {
var jsTable = databaseManager.getTable('udm', 'campaigns');
var columnNames = jsTable.getColumnNames();
var _dataset = databaseManager.createEmptyDataSet(0,["column_name", "column_type"]);
var _jsColumn;
for (var i = 0; i < columnNames.length; i++) {
_jsColumn = jsTable.getColumn(columnNames[i]);
_dataset.addRow([columnNames[i], _jsColumn.getTypeAsString()]);
}
var _dataSource = _dataset.createDataSource("columns", [JSColumn.TEXT, JSColumn.TEXT]);
var _jsForm = solutionModel.getForm(controller.getName());
_jsForm.dataSource = _dataSource;
var _fields = _jsForm.getFields();
_fields[0].dataProviderID = "column_name";
_fields[1].dataProviderID = "column_type";
controller.recreateUI();
controller.loadAllRecords();
}
}
Note that this code is a little unsafe, because I don't check if the fields really are there. But it will get you started.
Thanks Joas!
I tried it and it worked. =)