実現したいこと
ASP.NET Core BlazorのVirtualizeコンポーネントで<table>の要素を出力していますが、
画面の初期表示時にスクロール位置を指定したいです。
(たとえば1000行ある中の900行目の位置にスクロールしたい)
一覧から行を選択して詳細画面を開くUIがあり、詳細画面から戻った際に
スクロール位置を詳細画面を表示する直前の位置に戻したいです。
発生している問題・分からないこと
そういったことが可能なのか、可能なのであればどのように実装すべきか
ご教示いただきたいです。
該当のソースコード
Index.razor
1@page "/index" 2 3<PageTitle>Index</PageTitle> 4 5<div style="height: 100%; overflow-y: auto;"> 6 <table> 7 <thead> 8 <tr> 9 <th>sample1</th> 10 <th>sample2</th> 11 <th>sample3</th> 12 </tr> 13 </thead> 14 <tbody> 15 <Virtualize Context="sample" Items="@sampleList"> 16 <tr> 17 <td>@sample.Sample1</td> 18 <td>@sample.Sample2</td> 19 <td>@sample.Sample3</td> 20 </tr> 21 </Virtualize> 22 </tbody> 23 </table> 24</div> 25 26@code { 27 private List<Sample> sampleList = []; 28 29 protected override async Task OnAfterRenderAsync(bool firstRender) 30 { 31 if (firstRender) 32 { 33 for (var i = 0; i <= 1000; i++) 34 { 35 sampleList.Add(new Sample 36 { 37 Sample1 = $"Sample1-{i}", 38 Sample2 = $"Sample2-{i}", 39 Sample3 = $"Sample3-{i}", 40 }); 41 } 42 } 43 44 await base.OnAfterRenderAsync(firstRender); 45 } 46 47 public class Sample 48 { 49 public string Sample1 { get; set; } = string.Empty; 50 51 public string Sample2 { get; set; } = string.Empty; 52 53 public string Sample3 { get; set; } = string.Empty; 54 } 55}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・「Blazor Virtualize スクロール位置」で検索しましたがヒットしませんでした。
・js(jquery)のscrollTop()でスクロール位置をセットしようとしましたが
スクロール位置が想定より上のほうになってしまい上手くいきませんでした。
※Virtualizeではなくforeachを利用していたときはこの方法で実現できていました。
補足
特になし
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/11/12 06:39
2024/11/12 10:25