Проблема WebOS VirtualList - PullRequest
       22

Проблема WebOS VirtualList

1 голос
/ 21 июля 2011

В моем коде я пытаюсь отобразить мою базу данных 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+')');
   }
});

1 Ответ

1 голос
/ 21 июля 2011

Я думаю, вам нужно использовать виртуальный повторитель здесь: 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;

}

Помогает ли это?ps Я не ценю, что вы отправили мне по электронной почте мой личный адрес электронной почты и задали вопросы!

...