Yes, your explanation is correct. You add some data container to your page (say a gridview), get a large dataset (say a table), and set the datasource of the control to the dataset. You can cache your dataset in ViewState or Session depending on whether it is applicable to only your page, or your whole application. You configure paging on the control, and handle the page events to reset which subset page of the whole dataset to display.
Not a complete example, but to highlight the important pieces:
PAGE:
<asp:gridview id="gvData" runat="server" allowpaging="true" pagesize="20"></asp:gridview>
CODE:
Private Sub gvData_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvData.PageIndexChanging
gvData.PageIndex = e.NewPageIndex
gvData.DataSource = ViewState(DATA_NAME)
gvData.DataBind
End Sub