2 Replies Latest reply: Sep 15, 2016 5:03 AM by Tobias Scholl RSS

    How to wait until ListBox is loaded completely?

      Hi,

       

      We have a QlikView Extension Object which depends on 1 ListBox.

      $(document).ready() is used to wait until the document is loaded, and then we do our extension's initialization logic.

      However, even when the document is ready, the ListBox.Data has not been loaded.

       

      Using a callback in the form of GetObject('LB_listbox', function() { alert('listbox updated' });

      does not work (no alert pops up) for the very first time the whole .qvw document is loaded.

      Subsequent updates to the listbox pop up the alert box.

       

      Question:

      How do I wait until the ListBox is loaded completely?

      Meaning its ListBox.Data has been populated, and all methods in ListBox.Data.* ( e.g. SelectTexts() ) are available?

       

      Qva.AddExtension("our_ext", function () {

              //wait for the whole document to load

              $(document).ready(function () {

                  if (window.IntraMapsQV_first_time === true) {

                      //alert('first time');

                      //Listbox.Data only have IsDataFetched(), no other functions

                      debugger;

                      window.IntraMapsQV_first_time = false;

                  }

                  else {

                      //alert('second or x time');

                  }

       

      ...

       

      Many thanks

        • Re: How to wait until ListBox is loaded completely?
          Tim Kendrick

          Were you able to figure this out?

          • Re: How to wait until ListBox is loaded completely?
            Tobias Scholl

            Hey there.

            I had the same problem.

            Since the data of the Listbox is loaded via AJAX you have to check the status of the object and not of the page.

            Try this:

            var doc = Qv.GetCurrentDocument(); // Your QV doc

                                var lb = doc.GetObject("LB01"); // the ID of your Listbox  Object

                                lb.SetOnUpdateComplete(function() { // WHEN teh data is loaded

                                        for (var i = 0; i<lb.Data.Rows.length; i++) { //access the data

                                              //.... your code

                                        }

                                });

             

             

            Hope this helps.