I am just trying to work out how to navigate between records in an sqlite database using simple 'forward' and 'back' buttons.
I can acces the database and display the records - I do this by creating a tableview of the records then if you click on a record it brings up more details about it. I then just want buttons on this page to navigate through the database.
I am not sure what code needs to be applied to the buttons.
This is the code for the window.
// create var for the currentWindow
var currentWin = Ti.UI.currentWindow;
var id = currentWin.id;
function photoGalleryDidClose(item) {
photoView.image = item.media;
}
var db = Titanium.Database.open('photos');
var sql = db.execute('SELECT * FROM photos where id=?', currentWin.id);
var recordID = sql.fieldByName('id');
var title = sql.fieldByName('title');
var location = sql.fieldByName('location');
var photographer = sql.fieldByName('photographer');
var equipment = sql.fieldByName('equipment');
var caption = sql.fieldByName('caption');
var notes = sql.fieldByName('notes');
var date = sql.fieldByName('date');
var imageUrl = sql.fieldByName('imageUrl');
//Labels to display catalogue details
var labelrecordID = Titanium.UI.createLabel({
text:'Record ID:',
font:{fontSize:18},
top:30,
left: 10,
height: 25,
width:'auto'
})
currentWin.add(labelrecordID);
var labelrecordID1 = Titanium.UI.createLabel({
text:' '+ recordID +'',
font:{fontSize:18},
color:'black',
borderRadius: 2,
top:30,
left: 150,
height: 25,
backgroundColor:'white',
width:'300'
})
currentWin.add(labelrecordID1);
var labelTitle = Titanium.UI.createLabel({
text:'Title:',
font:{fontSize:18},
top:70,
left: 10,
height: 25,
width:'auto'
})
currentWin.add(labelTitle);
var labelTitle1 = Titanium.UI.createLabel({
text:' '+ title +'',
font:{fontSize:18},
color:'black',
borderRadius: 2,
top:70,
left: 150,
height: 25,
backgroundColor:'white',
width:'300'
})
currentWin.add(labelTitle1);
//
//I CUT OUT A LOT OF THE CODE HERE AS IT IS JUST THE SAME AS ABOVE...
//
// create a view to add the label and photo
var photoContainerView = Ti.UI.createView({
top: 310,
left: 10,
height: 230,
width: Ti.UI.FILL
});
var photoLabel = Ti.UI.createLabel({
text: 'Photo:',
left: 0,
height: Ti.UI.SIZE,
width: Ti.UI.SIZE,
font:{fontSize:18}
});
photoContainerView.add(photoLabel);
var photoView = Ti.UI.createImageView({
image: imageUrl,
top: 0,
left: 125,
height: 200,
width: 200,
borderColor: 'gray',
borderWidth: 1
});
photoContainerView.add(photoView);
currentWin.add(photoContainerView);
// create navigation buttons
//
var button_previous = Titanium.UI.createButton({
title: 'Previous',
color: 'white',
backgroundColor: '#464646',
font:{fontSize:20,fontFamily:'Helvetica Neue'},
bottom: 20,
left:10,
width: 100,
height: 60
});
currentWin.add(button_previous);
var button_next = Titanium.UI.createButton({
title: 'Next',
color: 'white',
backgroundColor: '#464646',
font:{fontSize:20,fontFamily:'Helvetica Neue'},
bottom: 20,
right:10,
width: 100,
height: 60
});
currentWin.add(button_next);
I just want to add the event listeners to the button so I can go back/forward through the records in the database but I am unsure where to begin and what code needs to be utilised.
Any suggestions greatly appreciated.
JC
Use the click listener to refresh the table with new data, store your current place in the table and page through it like this:
var currentPage = 0;
var pageSize = 25;
button_next.addEventListener('click', function(e) {
currentPage++;
// Load the data
var sql = db.execute('SELECT * FROM photos where id>? LIMIT ?', currentPage * pageSize, pageSize);
.... Your code to convert this statement to actual rows ....
table.setData(yourUpdatedRowDataArray);
});
The previous button would work the same way except opposite.