このコントロールは非推奨であり、Grid に置き換えられていることに注意してください。そのため、そのコントロールに移行することをお勧めします。これは新しい機能を受け取ることはなく、バグ修正は優先されません。コードベースをデータ グリッドに移行する際のヘルプや質問については、サポートにお問い合わせください。
Blazor グリッド / テーブルのページネーション
表形式のテーブル UI は、多くの Web 製品で一般的に使用されています。表形式のテーブル UI を最初から作成するのは簡単ではありませんが、Ignite UI for Blazor グリッドを使用すると、テーブル UI の作成が簡単になり、大量のローカル データまたはリモート データを Blazor グリッドにバインドするのも簡単です。グリッドはデフォルトで仮想化されているため、大きなデータ セットを表示するためにテーブルのページネーションを含める必要はありません。これは主に、UI で複雑なデータを整理する最も効率的な方法のために使用されます。テーブルのページネーションを使用すると、データを設定された行数で表示できるため、ユーザーは実際にスクロールバーを必要とせずに、データをスクロールできます。テーブルのページネーション UI には通常、現在のページ、合計ページ、クリック可能な [前へ] と [次へ] の矢印/ボタンなどが含まれ、ユーザーは次のようにページをめくることができます:
行のページングは、IsPagerVisible
プロパティを設定することにより、Ignite UI for Blazor データ テーブル / データ グリッド内で有効になります。さらに、PageSize
を設定することで、表示される行の最大数を制限できます。
すぐに使用できる機能のフルセット は、ページング、ソート、フィルタリング、編集、グループ化から行と列の仮想化まで、あらゆる機能をカバーします。.NET 開発者には制限はありません。
Blazor 行のページングの例
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(
typeof (IgbDataGridModule),
typeof (IgbGridColumnOptionsModule)
);
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<div class ="container vertical" >
@ if (Data != null )
{
<div class ="container center" style ="overflow: hidden" >
<IgbDataGrid Height ="100%" Width ="100%"
DataSource ="Data"
AutoGenerateColumns ="false"
IsPagerVisible ="true"
PageSize ="20" >
<IgbTextColumn Field ="ProductID" Width ="@( "*>110" ) " HeaderText ="ID" HorizontalAlignment ="CellContentHorizontalAlignment.Center" />
<IgbTextColumn Field ="ProductName" HeaderText ="Product" Width ="@( "*>120" ) " />
<IgbImageColumn IsEditable ="false" Field ="CountryFlag" HeaderText ="Country" Width ="@( "*>130" ) " / >
<IgbNumericColumn Field ="ProductPrice" HeaderText ="Price" Width ="@( "*>110" ) " PositivePrefix ="$" ShowGroupingSeparator ="true" MaxFractionDigits ="0" MinFractionDigits ="0" />
<IgbNumericColumn Field ="OrderItems" HeaderText ="Orders" Width ="@( "*>140" ) " PositivePrefix ="" ShowGroupingSeparator ="true" MaxFractionDigits ="0" MinFractionDigits ="0" />
<IgbNumericColumn Field ="OrderValue" HeaderText ="Order Value" Width ="@( "*>160" ) " PositivePrefix ="$" ShowGroupingSeparator ="true" MaxFractionDigits ="0" MinFractionDigits ="0" />
<IgbDateTimeColumn Field ="OrderDate" HeaderText ="Order Date" Width ="@( "*>150" ) " DateTimeFormat ="DateTimeFormats.DateShort" />
<IgbNumericColumn Field ="Margin" Width ="@( "*>140" ) " PositivePrefix ="$" / >
<IgbNumericColumn Field ="Profit" Width ="@( "*>140" ) " PositivePrefix ="$" ShowGroupingSeparator ="true" MaxFractionDigits ="0" MinFractionDigits ="0" />
<IgbTextColumn Field ="Status" Width ="@( "*>140" ) " />
</IgbDataGrid >
</div >
}
</div >
@code {
private List <SaleInfo > Data;
private Random Rand = new Random();
protected override void OnInitialized ( )
{
GenerateData();
}
public void GenerateData ( )
{
string [] names = new string [] {
"Intel CPU" , "AMD CPU" ,
"Intel Motherboard" , "AMD Motherboard" , "Nvidia Motherboard" ,
"Nvidia GPU" , "Gigabyte GPU" , "Asus GPU" , "AMD GPU" , "MSI GPU" ,
"Corsair Memory" , "Patriot Memory" , "Skill Memory" ,
"Samsung HDD" , "WD HDD" , "Seagate HDD" , "Intel HDD" , "Asus HDD" ,
"Samsung SSD" , "WD SSD" , "Seagate SSD" , "Intel SSD" , "Asus SSD" ,
"Samsung Monitor" , "Asus Monitor" , "LG Monitor" , "HP Monitor" };
string [] countries = new string [] {
"USA" , "UK" , "France" , "Canada" , "Poland" ,
"Denmark" , "Croatia" , "Australia" , "Seychelles" ,
"Sweden" , "Germany" , "Japan" , "Ireland" ,
"Barbados" , "Jamaica" , "Cuba" , "Spain" , };
string [] status = new string [] { "Packing" , "Shipped" , "Delivered" };
var sales = new List<SaleInfo>();
for (var i = 0 ; i < 200 ; i++)
{
var price = GetRandomNumber(10000 , 90000 ) / 100 ;
var items = GetRandomNumber(4 , 30 );
var value = Math.Round(price * items);
var margin = GetRandomNumber(2 , 5 );
var profit = Math.Round((price * margin / 100 ) * items);
var country = GetRandomItem(countries);
var item = new SaleInfo()
{
Country = country,
CountryFlag = GetCountryFlag(country),
Margin = margin,
OrderDate = GetRandomDate(),
OrderItems = items,
OrderValue = value ,
ProductID = 1001 + i,
ProductName = GetRandomItem(names),
ProductPrice = price,
Profit = Math.Round(profit),
Status = GetRandomItem(status)
};
sales.Add(item);
}
this .Data = sales;
}
public double GetRandomNumber (double min, double max )
{
return Math.Round(min + (Rand.NextDouble() * (max - min)));
}
public string GetRandomItem (string [] array )
{
var index = (int )Math.Round(GetRandomNumber(0 , array.Length - 1 ));
return array[index];
}
public DateTime GetRandomDate ( ) {
var today = new DateTime();
var year = today.Year;
var month = this .GetRandomNumber(1 , 9 );
var day = this .GetRandomNumber(10 , 27 );
return new DateTime(year, (int )month, (int )day);
}
public string GetCountryFlag (string country )
{
var flag = "https://static.infragistics.com/xplatform/images/flags/" + country + ".png" ;
return flag;
}
public class SaleInfo
{
public string Status { get ; set ; }
public string ProductName { get ; set ; }
public string CountryFlag { get ; set ; }
public string Country { get ; set ; }
public DateTime OrderDate { get ; set ; }
public double Profit { get ; set ; }
public double ProductPrice { get ; set ; }
public double ProductID { get ; set ; }
public double OrderValue { get ; set ; }
public double OrderItems { get ; set ; }
public double Margin { get ; set ; }
}
}
razor コピー
このサンプルが気に入りましたか? 完全な Ignite UI for Blazorツールキットにアクセスして、すばやく独自のアプリの作成を開始します。無料でダウンロードできます。
概要
UX の観点から、テーブルのページネーションには長所と短所があります。UX Matters の最近の記事 による、テーブルのページネーションの良い面と悪い面の分類です:
テーブルのページネーションの利点:
ユーザーの選択を制限します。
クリック数は測定可能です。
テーブルのページネーションの欠点:
ユーザーはまだスクロールする必要があります。
ページャーの作業と動作はサイトごとに異なります。
UI コントロールが多すぎると、混乱する可能性があります。
ユーザーは、ページネーションが遅くて面倒だと考えています。
ユーザーはページネーション コントロールに気付かない場合があります。
ページの読み込みが遅い場合があります。
アクションがページに適用されるのか、データ セット全体に適用されるのか、ユーザーは混乱します。
Ignite UI Blazor グリッドを使用すると、開発者はページングを追加できますが、グリッドにはデフォルトで無限スクロールが組み込まれているため、グリッドにページャーを追加するのではなく、無限 (または仮想) スクロールをお勧めします。デフォルトのユーザー エクスペリエンスとして仮想化された無限スクロールを使用すると、次のことが可能になります:
スクロール操作によってページングされるデータの量を制御しながら、最高のパフォーマンスを実現。
すべてのコンテンツをスクロールするための自然なアプローチ。
すべてのインタラクションはエンド ユーザーに明確です。
モバイル UX での自然なインタラクションにマップします。
Blazor グリッド/ページの同期
ユーザーがソートやグループ化などのグリッドを操作し、グリッドで Blazor Pager を有効にした場合、次の関数を使用して、Blazor ページネーション データが Blazor テーブル表示と同期されるようにする必要があります。
applySorts
applyGroups
applyFilters
API リファレンス