从DB显示optgroup值

时间:2014-05-28 10:04:49

标签: javascript jquery sqlite jquery-mobile

基本上,我有一个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进行显示,则会正确显示,但只显示列中的最后一个元素

2 个答案:

答案 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
    });
});

Demo