No More Posting New Topics!

If you have a question or an issue, please start a thread in our Github Discussions Forum.
This forum is closed for new threads/ topics.

Navigation

    Quasar Framework

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    Scroll Table to top when next table pagination is pressed

    Help
    2
    3
    595
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      thekingrenz23 last edited by

      I have a lot of data to render on my table.

      5k plus data. I limit it 50 records per page.

      The problem is when the next pagination is pressed the scroll stays where you left it.

      I want to scroll to the top again when i press the next pagination

      Thanks

      beets 1 Reply Last reply Reply Quote 0
      • beets
        beets @thekingrenz23 last edited by beets

        @thekingrenz23 you could watch the pagination object and use https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView

        I’m on mobile now, but I’ll post an example in the morning if you don’t figure it out. I just did the same sort of thing last week.

        1 Reply Last reply Reply Quote 0
        • beets
          beets last edited by

          For an example, it’s something like this. Quasar has some scrolling utils you can use instead of a raw scrollIntoView call: https://quasar.dev/quasar-utils/scrolling-utils#Scrolling-to-an-element

          Also, you can watch all pagination props with a deep watcher instead of 'pagination.page': https://vuejs.org/v2/api/#watch

          <template>
            <div id="myTable" class="q-pa-md">
              <q-table
                title="Treats"
                :data="data"
                :columns="columns"
                row-key="name"
                :pagination.sync="pagination"
              />
            </div>
          </template>
          <script>
          export default {
            watch: {
              'pagination.page'() {
                document.getElementById('myTable').scrollIntoView()
              } 
            },
            data () {
              return {
                pagination: {
                  sortBy: 'desc',
                  descending: false,
                  page: 2,
                  rowsPerPage: 3
                  // rowsNumber: xx if getting data from a server
                },
          
                columns: [
                  {
                    name: 'desc',
                    required: true,
                    label: 'Dessert (100g serving)',
                    align: 'left',
                    field: row => row.name,
                    format: val => `${val}`,
                    sortable: true
                  },
                  { name: 'calories', align: 'center', label: 'Calories', field: 'calories', sortable: true },
                  { name: 'fat', label: 'Fat (g)', field: 'fat', sortable: true },
                  { name: 'carbs', label: 'Carbs (g)', field: 'carbs' },
                  { name: 'protein', label: 'Protein (g)', field: 'protein' },
                  { name: 'sodium', label: 'Sodium (mg)', field: 'sodium' },
                  { name: 'calcium', label: 'Calcium (%)', field: 'calcium', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) },
                  { name: 'iron', label: 'Iron (%)', field: 'iron', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) }
                ],
          
                data: [
                  {
                    name: 'Frozen Yogurt',
                    calories: 159,
                    fat: 6.0,
                    carbs: 24,
                    protein: 4.0,
                    sodium: 87,
                    calcium: '14%',
                    iron: '1%'
                  },
                  {
                    name: 'Ice cream sandwich',
                    calories: 237,
                    fat: 9.0,
                    carbs: 37,
                    protein: 4.3,
                    sodium: 129,
                    calcium: '8%',
                    iron: '1%'
                  },
                  {
                    name: 'Eclair',
                    calories: 262,
                    fat: 16.0,
                    carbs: 23,
                    protein: 6.0,
                    sodium: 337,
                    calcium: '6%',
                    iron: '7%'
                  },
                  {
                    name: 'Cupcake',
                    calories: 305,
                    fat: 3.7,
                    carbs: 67,
                    protein: 4.3,
                    sodium: 413,
                    calcium: '3%',
                    iron: '8%'
                  },
                  {
                    name: 'Gingerbread',
                    calories: 356,
                    fat: 16.0,
                    carbs: 49,
                    protein: 3.9,
                    sodium: 327,
                    calcium: '7%',
                    iron: '16%'
                  },
                  {
                    name: 'Jelly bean',
                    calories: 375,
                    fat: 0.0,
                    carbs: 94,
                    protein: 0.0,
                    sodium: 50,
                    calcium: '0%',
                    iron: '0%'
                  },
                  {
                    name: 'Lollipop',
                    calories: 392,
                    fat: 0.2,
                    carbs: 98,
                    protein: 0,
                    sodium: 38,
                    calcium: '0%',
                    iron: '2%'
                  },
                  {
                    name: 'Honeycomb',
                    calories: 408,
                    fat: 3.2,
                    carbs: 87,
                    protein: 6.5,
                    sodium: 562,
                    calcium: '0%',
                    iron: '45%'
                  },
                  {
                    name: 'Donut',
                    calories: 452,
                    fat: 25.0,
                    carbs: 51,
                    protein: 4.9,
                    sodium: 326,
                    calcium: '2%',
                    iron: '22%'
                  },
                  {
                    name: 'KitKat',
                    calories: 518,
                    fat: 26.0,
                    carbs: 65,
                    protein: 7,
                    sodium: 54,
                    calcium: '12%',
                    iron: '6%'
                  }
                ]
              }
            }
          }
          </script>
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post