基本上,我有一个jQuery Mobile风格的多选optgroup。选择选项后,它们在实际选择显示中以逗号分隔显示。我已经使用这段代码将每个选中的项目分开,并将它们分别放在我的SQLite表中的不同行:
db.transaction(function(transaction) {
var optgroup = String($('#myselect').val());
var optarray = optgroup.split(',');
for(var i=0; i<optarray.length; i++){
transaction.executeSql('INSERT INTO mytable(myvalue)\
VALUES(?)',[optarray[i]],
nullHandler);
}
});
}
我的问题是:当我回到带有optgroup的页面时,如何以逗号分隔重新显示这些值?更清楚:
说我从选择中选择了item1和item2 ...它看起来像这个item1,item2
然后将它们分成两行
row1 item1
row2 item2
现在,当我回到该页面时,我希望看到用户以原始逗号分隔形式在optgroup中选择的这些值。我希望这是有道理的,任何帮助都会受到赞赏
编辑:通常我只是从数据库中选择并使用select的id显示pageload上的值,但我需要在一个selectmenu中显示多行中的多个值
编辑:正如我所建议的那样尝试db.transaction(function(transaction) {
transaction.executeSql('SELECT GROUP_CONCAT (columname) FROM mytable', [],
function(transaction, result) {
if (result != null && result.rows != null) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
$('#myselect').val(row['GROUP_CONCAT(columname)']);
}
$('#myselect').selectmenu('refresh');
}
},errorHandler);
},errorHandler,nullHandler);
但是在检查返回的值时,它为null。我将group_concat行放入数据库检查器,它正确地返回逗号分隔的行,但它们仍然不会显示在我的select中。不确定返回类型是否是问题? group_concat似乎返回一个String。
如果我尝试不使用group_concat进行显示,则会正确显示,但只显示列中的最后一个元素
答案 0 :(得分:1)
group_concat function返回以逗号分隔的值列表:
SELECT group_concat(myvalue) FROM mytable
答案 1 :(得分:1)
为了更新选择,我们可以通过选择选项并设置属性&#34;选择&#34;来设置值。为真。而且因为我们正在使用jQuery mobile,所以我们还必须在完成后刷新视图。选择行后,可以将代码放入回调中。像
这样的东西db.transaction(function(tx) {
tx.executeSql("select colname from selected;", [], function(tx, result) {
dataset = result.rows;
for (var i = 0, item = null; i < dataset.length; i++) {
item = dataset.item(i);
//set option with value in colname to true
$("option[value="+item['colname']+"]").attr("selected",true);
}
$("#select-choice").selectmenu("refresh") //refresh select
});
});