在我的代码中,我想在垂直列表中显示我的sqlite数据库 并且在for循环中的代码中,您可以看到注释的警报,并且它们符合我想要的值,这是我想要的数据库。
现在我希望在垂直列表中显示该值。
我知道解决方案就像在数组中设置数据并呈现它但是如何? 可以通过编辑我的代码重播
/* Copyright 2009-2011 Hewlett-Packard Development Company, L.P. All rights reserved. */
enyo.kind({
name: "storage.SQLite",
kind: HeaderView,
components: [
{name: "createDBButton", kind: "Button", caption: "Create Database", onclick: "createDB"},
{name: "createTableButton", kind: "Button", caption: "Create TABLE1", onclick: "createTable"},
{name: "fillTableButton", kind: "Button", caption: "Insert a Row into TABLE1", onclick: "fillTable"},
{name: "queryButton", kind: "Button", caption: "Show TABLE1 Contents", onclick: "doQuery"},
{name: "results", kind: "HtmlContent"},
{kind: "VirtualList", name:"myVirtualList", style: "width: 500px; height: 200px;",
components: [
{kind: "Item", layoutKind: "HFlexLayout", components: [
{name: "caption1", flex: 1},
{name: "caption2", flex: 1},
]}
]
}
],
createDB: function() {
try {
this.db = openDatabase('SampleDB', '', 'Sample Data Store', 65536);
this.$.results.setContent("Created database SampleDB.");
}
catch (e)
{
this.$.results.setContent(e);
}
},
createTable: function() {
try {
this.nullHandleCount = 0;
//create table 1
var string = 'CREATE TABLE IF NOT EXISTS table1 (col1 TEXT NOT NULL DEFAULT "nothing", col2 TEXT NOT NULL DEFAULT "nothing");'
this.db.transaction(
enyo.bind(this,(function (transaction) {
//transaction.executeSql('DROP TABLE IF EXISTS table1;', []);
transaction.executeSql(string, [], enyo.bind(this,this.createTableDataHandler), enyo.bind(this,this.errorHandler));
}))
);
}
catch (e)
{
this.$.results.setContent(e);
}
},
fillTable: function() {
this.$.results.setContent('0');
this.nullHandleCount = 0;
var string = 'INSERT INTO table1 (col1, col2) VALUES (" Ajay "," value2 ");'
this.db.transaction(
enyo.bind(this,(function (transaction) {
transaction.executeSql(string, [], enyo.bind(this,this.createRecordDataHandler), enyo.bind(this,this.errorHandler));
}))
);
},
doQuery: function() {
// Query table1
var mytext = 'select * from table1;'
this.db.transaction(
enyo.bind(this,(function (transaction) {
transaction.executeSql(mytext, [], enyo.bind(this,this.setupRow), enyo.bind(this,this.errorHandler));
}))
);
},
createTableDataHandler: function(transaction, results)
{
this.$.results.setContent("Created TABLE1.");
},
createRecordDataHandler: function(transaction, results)
{
this.$.results.setContent("Inserted 1 record.");
},
setupRow: function(transaction, results)
{
var string = "";
try {
var list = [];
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i);
//alert(results.rows.item(i).col1);
//alert(results.rows.item(i).col2);
this.$.caption1.setContent(results.rows.item(i).col1);
this.$.caption2.setContent(results.rows.item(i).col1);
}
}
catch (e)
{
this.$.results.setContent(e);
}
},
errorHandler: function(transaction, error)
{
this.$.results.setContent('Error was '+error.message+' (Code '+error.code+')');
}
});
答案 0 :(得分:1)
我认为你需要在这里使用虚拟转发器:https://developer.palm.com/content/api/reference/enyo/enyo-api-reference.html#enyo.VirtualRepeater
其中有许多回调选项 - 例如onSetupRow:“someMethod”
您需要调用此方法...这将填充网格的每一行。
我正确或错误地对我的结果集所做的是在我的覆盖Create中,我将创建一个变量varResults = [];
然后我调用一种方法来查询我的数据,例如
onClickData: function(){
// Get some data
this.varResults = recordSet;
}
这有帮助吗?附:我不希望您通过电子邮件发送我的个人电子邮件地址并提出问题!