2012-10-17 4 views
0

로컬 데이터베이스에서 데이터를 가져 와서 사용자 정의 행을 사용하는 테이블 뷰에 표시하려고합니다. 제대로 표시하는 방법을 모르겠습니다. 현재 쓰여지는 방식으로 데이터가 올바르게 표시된 한 행이 표시되지만 수천 개의 빈 행이 표시됩니다. 두 개의 while (rows.isValidRow()) 문이 있기 때문에 내 문제라고 생각합니다. 누군가이 디스플레이를 올바르게 만들 수있는 코드를 보여 주시겠습니까? 현재 코드는 다음과 같습니다.사용자 정의 테이블 뷰 행 표시

//Setup the window 
var win = Titanium.UI.currentWindow; 
win.barColor='#000000'; 

//install database 
var db = Ti.Database.install('bcapool3.sqlite','distributor'); 

//Get data 
var rows = db.execute('SELECT * FROM distributor'); 

// create table view 
var tableview = Ti.UI.createTableView({ 
    backgroundColor:'transparent', 
    color: '#000000', 
    top:80, 
    height:'auto', 
    left:80, 
    right:80, 
    bottom:120 
}); 


function setData() { 

while (rows.isValidRow()) 
{ 
var dataArray = []; 
var row = Ti.UI.createTableViewRow({ 
    haschild: true, 
    path: 'distributordetail.js' 
}); 
    var title = Ti.UI.createLabel({ 
    color:'#000000', 
    height:32, 
    left:5, 
    top:2, 
    font:{fontSize:'18dp',fontWeight:'bold' }, 
    backgroundColor:'transparent', 
    text:'' + rows.fieldByName('distributor_name') + '' 
    }); 

    var address = Ti.UI.createLabel({ 
    color:'#000000', 
    height:32, 
    left:5, 
    top:34, 
    fontSize:'14dp', 
    backgroundColor:'transparent', 
    text:'' + rows.fieldByName('distributor_address') + '' 
    }); 

    var distance = Ti.UI.createLabel({ 
    color:'#000000', 
    height:32, 
    right: 10, 
    top:34, 
    fontSize:'12dp', 
    backgroundColor:'transparent', 
    text:'' + rows.fieldByName('distance') + '' 
    }); 

    row.add(title); 
    row.add(address); 
    row.add(distance); 
    tableview.add(row); 
    row.className = 'distributorRow'; 

    dataArray.push(row); 
    rows.next();  
} 

// set the array to the tableView 
tableview.setData(dataArray); 
} 
} 
+0

문제가 해결되었습니다. 위의 코드는 작동하는 코드를 반영하도록 편집되었습니다! – dnevels

답변

2

루프가 문제가되는 동안 2 단계입니다. 있는 tableView에 데이터로 dataArray 설정 한 다음 dataArray.push(row);

와 while 루프의 외부 : tableview.setData(dataArray);

난 그냥 코드의 일부를 수정하고 잘 작동 : 은 또한 당신은 dataArray에 행을 추가 할 필요가

//Setup the window 
var win = Titanium.UI.createWindow({ 
    backgroundColor: '#123456', 
}); 

//install database 
var db = Ti.Database.open('distributor'); 
try{ 
    db.execute('create table if not exists distributor(id varchar(10), distributor_name varchar(10), distributor_address varchar(10), distance varchar(10));'); 
    db.execute("Insert into distributor values('id1','name1','address1','distance1')"); 
    db.execute("Insert into distributor values('id2','name2','address2','distance2')"); 
    db.execute("Insert into distributor values('id3','name3','address3','distance3')"); 
    db.execute("Insert into distributor values('id4','name4','address4','distance4')"); 
    db.execute("Insert into distributor values('id5','name5','address5','distance5')"); 
} 
catch(err) 
{ 
    Ti.API.info(err.message); 

} 



// create table view 
var tableview = Ti.UI.createTableView({ 
    backgroundColor:'transparent', 
    color: '#000000', 
    top:80, 
    height:'auto', 
    left:80, 
    right:80, 
    bottom:120 
}); 

setData(); 
win.add(tableview); 
win.open(); 


function setData() { 
    //db.open(); 
    var rows = db.execute('SELECT * FROM distributor'); 
    //db.close(); 
    var dataArray = []; 
    while (rows.isValidRow()) 
    { 
     var row = Ti.UI.createTableViewRow({ 
      haschild: true, 
     }); 
     var title = Ti.UI.createLabel({ 
      color:'#000000', 
      height:32, 
      left:5, 
      top:2, 
      font:{fontSize:'18dp',fontWeight:'bold' }, 
      backgroundColor:'transparent', 
      text:'' + rows.fieldByName('distributor_name') + '' 
     }); 
     var address = Ti.UI.createLabel({ 
      color:'#000000', 
      height:32, 
      left:5, 
      top:34, 
      fontSize:'14dp', 
      backgroundColor:'transparent', 
      text:'' + rows.fieldByName('distributor_address') + '' 
     }); 
     var distance = Ti.UI.createLabel({ 
      color:'#000000', 
      height:32, 
      right: 10, 
      top:34, 
      fontSize:'12dp', 
      backgroundColor:'transparent', 
      text:'' + rows.fieldByName('distance') + '' 
     }); 
     row.add(title); 
     row.add(address); 
     row.add(distance); 
     dataArray.push(row); 
     rows.next();  
    } 
    tableview.setData(dataArray); 
} 
관련 문제