Webページでリストの最終行位置までスクロールされたことを判断する方法

2023年1月18日

World WideのLANSA技術フォーラムに投稿されたトピックと、日本のお客様からのお問い合わせへの回答の中から、皆様にお役に立つLANSAの開発テクニックやトラブルシュートに関する情報をご紹介します。

質問

Webページ上のリストを最終行までスクロールダウンした際に、行の追加を行いたいと考えています。
最終行までスクロールされたことを、イベントなどで判断する方法はありますか?

回答

リストのItemRealizingイベントで、表示された行の位置を取得し、最終行の判断を行えます。
尚、リストのVirtualizationプロパティは、"Page"に設定されている必要があります。
Virtualizationプロパティが、"None"に設定されていると、ItemRealizingイベントが自動発火してしまい、制御が出来なくなります。

以下は、サンプルコードになります。

Begin_Com Role(*EXTENDS #PRIM_WEB) Theme(#SYS_THEME) Height(536) Width(1160) Layoutmanager(#LayoutMain)

Define_Com Class(#PRIM_TBLO) Name(#LayoutMain)
Define_Com Class(#PRIM_TBLO.Column) Name(#LayoutMainColumn1) Displayposition(1) Parent(#LayoutMain)
Define_Com Class(#PRIM_TBLO.Row) Name(#LayoutMainRow1) Displayposition(1) Parent(#LayoutMain) Units(Pixels) Height(150)
Define_Com Class(#PRIM_TBLO.Row) Name(#LayoutMainRow2) Displayposition(2) Parent(#LayoutMain)
Define_Com Class(#PRIM_TBLO.Row) Name(#LayoutMainRow3) Displayposition(3) Parent(#LayoutMain) Units(Pixels) Height(150)
Define_Com Class(#PRIM_TBLO.Item) Name(#LayoutMainItem3) Alignment(TopCenter) Column(#LayoutMainColumn1) Manage(#List1) Parent(#LayoutMain) Row(#LayoutMainRow2)

Define_Com Class(#PRIM_LIST) Name(#List1) Displayposition(1) Left(0) Parent(#COM_OWNER) Tabposition(1) Top(150) Height(236) Width(1160) Columnheaderheight(40) Rowheight(50)
Define_Com Class(#PRIM_LIST.String) Name(#List1Column1) Columnwidth(91) Displayposition(1) Parent(#List1) Sortonclick(True) Source(#STD_CODE)
Define_Com Class(#PRIM_LIST.String) Name(#List1Column2) Columnwidth(246) Displayposition(2) Parent(#List1) Sortonclick(True) Source(#STD_DESC)

Evtroutine Handling(#COM_OWNER.Initialize)
#COM_OWNER.AddToList
Endroutine

Evtroutine Handling(#List1.ItemRealizing) Item(#Item)
If Cond(#Item.Entry = #List1.Items.ItemCount)
#COM_OWNER.AddToList
Endif
Endroutine

Mthroutine Name(AddToList)
#STD_CODE #STD_DESC := XXXXXXXXXXXXXXXXXXXXXXXXXX
Begin_Loop To(50)
Add_Entry To_List(#List1)
End_Loop
#SYS_WEB.Console.Log Text(#List1.Items.ItemCount.AsString)
Endroutine

End_Com

有償の「LANSAテクニカル・ホットライン・サービス」をご契約いただければ、データベースの検索(https://demo.lansa.jp/qadb/)」から、今回、ご紹介した以外の技術情報も探すことが出来ます。 「LANSAテクニカル・ホットライン・サービス」のご契約についてはお問い合わせフォーム(https://www.lansa.jp/inquiryforms/)よりお問い合わせください。