newbie: display table columns

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!

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.

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. =)