Serenity 2.1.5, aşağıdaki ayrıntıları içeren ızgara ayarlarını sürdürme yeteneğini sundu:
- Görünür Sütunlar ve Görüntüleme Sırası
- Sütun Genişlikleri
- Sıralanmış Sütunlar
- Gelişmiş Filtreler (sağ alttaki Filtreyi Düzenle bağlantısıyla oluşturulanlar)
- Hızlı Filtreler (yazıldığı an itibariyle, henüz mevcut değil)
- Dahil Edilme Durumu Silindi Geçişi
Varsayılan olarak ızgaralar hiçbir şeyi otomatik olarak sürdürmez.
Böylece bazı sütunları gizleyip Siparişler sayfasından ayrılırsanız, geri döndüğünüzde o gizli sütunların tekrar görünür hale geldiğini göreceksiniz.
Kalıcılığı tüm ızgaralar için veya ayarlarını hatırlamasını istediğiniz tek tek ızgaralar için açmanız gerekir.
Kalıcılığı Varsayılan Olarak Açma
DataGrid'in DefaultPersistanceStorage adında statik bir yapılandırma parametresi vardır . Bu parametre, varsayılan olarak ızgaraların ayarlarını otomatik olarak nereye kaydedeceğini kontrol eder. Başlangıçta null'dur.
ScriptInitialization.ts'de, tüm ızgaralar için kalıcılığı varsayılan olarak aşağıdaki gibi açabilirsiniz:
namespace Serene.ScriptInitialization {
Q.Config.responsiveDialogs = true;
Q.Config.rootNamespaces.push('Serene');
Serenity.DataGrid.defaultPersistanceStorage = window.sessionStorage;
}
Bu, ayarları, herhangi bir tarayıcı penceresi açık kalırken verileri koruyan bir anahtar/değer sözlüğü olan tarayıcı oturumu depolama alanına kaydeder. Kullanıcı tüm tarayıcı pencerelerini kapattığında tüm ayarlar kaybolacaktır.
Başka bir seçenek de tarayıcının yerel depolama alanını kullanmaktır. Bu, tarayıcı yeniden başlatmaları arasındaki ayarları korur.
Serenity.DataGrid.defaultPersistanceStorage = window.localStorage;
İki seçenekten herhangi birini kullanarak ızgaralar, sayfa yeniden yüklemeleri arasında ayarlarını hatırlamaya başlayacaktır.
Birden Çok Kullanıcı Tarafından Paylaşılan Bir Tarayıcıyı Kullanma
Hem sessionStorage hem de localStorage tarayıcı kapsamına sahiptir, dolayısıyla bir tarayıcı birden fazla kullanıcı tarafından paylaşılıyorsa aynı ayarlara sahip olurlar.
Bir kullanıcı bazı ayarları değiştirip oturumu kapatırsa ve diğeri oturum açarsa, ikinci kullanıcı ilk kullanıcının ayarlarıyla başlayacaktır (oturum kapatıldığında localStorage'ı temizlemediğiniz sürece)
Bu uygulamanız için bir sorunsa özel bir sağlayıcı yazmayı deneyebilirsiniz:
namespace Serene {
export class UserLocalStorage implements Serenity.SettingStorage {
getItem(key: string): string {
return window.localStorage.getItem(
Authorization.userDefinition.Username + ":" + key);
}
setItem(key: string, value: string): void {
window.localStorage.setItem(
Authorization.userDefinition.Username + ":" + key, value);
}
}
}
//...
Serenity.DataGrid.defaultPersistanceStorage = new UserLocalStorage();
Lütfen bunun herhangi bir güvenlik sağlamadığını unutmayın. Yalnızca kullanıcıların ayrı ayarlara sahip olmasına olanak tanır.
Izgara Türüne Göre Kalıcı Depolamayı Ayarlama
Kalıcılığı açmak veya belirli bir ızgara için hedef depolamayı değiştirmek için getPersistanceStorage yöntemini geçersiz kılın:
namespace Serene.Northwind {
//...
export class OrderGrid extends Serenity.EntityGrid<OrderRow, any> {
//...
protected getPersistanceStorage(): Serenity.SettingStorage {
return window.localStorage;
}
}
}
Bu yöntemden null değerini döndürerek de bir grid sınıfının kalıcılığını kapatabilirsiniz .
Hangi Ayar Türlerinin Kaydedildiğini Belirleme
Varsayılan olarak, görünür sütunlar, genişlikler, filtreler vb. gibi başlangıçta not edilen tüm ayarlar kaydedilir. Belirli ayarları sürdürmemeyi / geri yüklememeyi seçebilirsiniz. Bu, gridPersistanceFlags yöntemiyle kontrol edilir :
namespace Serene.Northwind {
//...
export class OrderGrid extends Serenity.EntityGrid<OrderRow, any> {
//...
protected gridPersistanceFlags(): GridPersistanceFlags {
return {
columnWidths: false // dont persist column widths;
}
}
}
}
İşte tam bayrak seti:
interface GridPersistanceFlags {
columnWidths?: boolean;
columnVisibility?: boolean;
sortColumns?: boolean;
filterItems?: boolean;
quickFilters?: boolean;
includeDeleted?: boolean;
}
Ayarlar Kaydedildiğinde / Geri Yüklendiğinde
Aşağıdaki gibi bir ızgaraya sahip bir şeyi değiştirdiğinizde ayarlar otomatik olarak kaydedilir:
- Sütun Seçici iletişim kutusuyla görünür sütunları seçme
- Bir sütunu manuel olarak yeniden boyutlandırma
- Gelişmiş filtreyi düzenleme
- Bir sütunu sürüklemek, konumu değiştirmek
- Sıralanmış sütunları değiştirme
Ayarlar, ızgara oluşturulduktan hemen sonra ilk sayfa yüklendiğinde geri yüklenir.
Veritabanında Kalıcı Ayarlar (Kullanıcı Tercihleri Tablosu)
Serene 2.1.5, kalıcı depolama alanı olarak kullanabileceğiniz bir Kullanıcı Tercihleri tablosuyla birlikte gelir. Bu depolamayı kullanmak için diğer depolama türlerine benzer şekilde depolama alanı olarak ayarlamanız yeterlidir.
/// <reference path="../Common/UserPreference/UserPreferenceStorage.ts" />
Serenity.DataGrid.defaultPersistanceStorage = new Common.UserPreferenceStorage();
Referans ifadesini eklemeyi unutmayın, aksi takdirde TypeScript'in sıralamada sorunları olacağından çalışma zamanı hatalarınız olur.
VEYA
namespace Serene.Northwind {
//...
export class OrderGrid extends Serenity.EntityGrid<OrderRow, any> {
//...
protected getPersistanceStorage(): Serenity.SettingStorage {
return new Common.UserPreferenceStorage();
}
}
}
Ayarları Manuel Olarak Kaydetme / Geri Yükleme
Ayarları manuel olarak kaydetmeniz/geri yüklemeniz gerekiyorsa aşağıdaki yöntemleri kullanabilirsiniz:
protected getCurrentSettings(flags?: GridPersistanceFlags): PersistedGridSettings;
protected restoreSettings(settings?: PersistedGridSettings, flags?: GridPersistanceFlags): void;
Bunlar DataGrid'in korumalı yöntemleridir, dolayısıyla yalnızca alt sınıflardan çağrılabilir.