KBS TKYS sistemi, tasınır istek bölümünde tek tek yazmanıza gerekkalmadan yapabilirsiniz Türkiye’de kamu kurumlarının kaynak yönetimini kolaylaştıran güçlü bir yazılım altyapısıdır. Bu sistemde veri tabanlı tablolar genellikle ExtJS tabanlı gridler ile sunulur. Özellikle malzeme ve stok yönetimi ekranlarında sayılar sıkça yer alır. Bazen, kullanıcıların 0 olan hücreleri tek tek manuel güncellemesi gerekebilir. Bu işlem hem zaman kaybına yol açar hem de hata riskini artırır.
Neyse ki, JavaScript ile ExtJS grid’in store verisini güncelleyerek tüm 0 değerleri otomatik olarak değiştirmek mümkündür. Bu makalede, bu işlemi nasıl güvenli ve etkili bir şekilde yapabileceğinizi göstereceğiz.
Otomatik Güncelleme Kodu
Aşağıdaki JavaScript kodu, tüm ExtJS grid bileşenlerini tarar ve store’da değeri 0 olan tüm alanları 99999 ile günceller: f12 ile consolu acıp calıştırabilirsiniz
Ext.ComponentMgr.all.each(function(c){
if (c.getStore) { // GridPanel olanlar
var store = c.getStore();
if (store) {
store.each(function(record){
// İlk kayıttan field adlarını çıkar
var fields = Object.keys(record.data);
fields.forEach(function(f){
if (record.get(f) === 0) {
record.set(f, 99999);
}
});
});
}
}
});
Kod Açıklaması:
- Ext.ComponentMgr.all.each → Sayfadaki tüm ExtJS componentlerini tarar.
- component.getStore → GridPanel olan bileşenleri filtreler.
- store.each → Grid’in her satırını (record) gezer.
- Object.keys(record.data) → Satırdaki tüm alanları alır.
- record.set(fieldName, 99999) → Değeri 0 olan alanları 99999 ile günceller. 99999 olan yere farklı bir rakam yapabilrisiniz
Ürün kodu aynı olanlardan sadece bir tanesine giriş yapmak için aşağıdaki kodu kullabilirsiniz. sadece 10 ile başlayan ürün kdolarına girdi yapar
Ext.ComponentMgr.all.each(function(c){
if (c.getStore) { // GridPanel olanlar
var store = c.getStore();
if (store) {
var islenmisUrunKodlari = {};
store.each(function(record){
// Ürün kodunu al (barKod varsa onu kullan)
var urunKodu = record.data.barKod || record.data['barKod'];
// Ürün kodu yoksa veya 150 ile başlamıyorsa bu kaydı atla
if (!urunKodu || !urunKodu.toString().startsWith('150')) {
return;
}
// Bu ürün kodu daha önce işlenmediyse
if (!islenmisUrunKodlari[urunKodu]) {
// İlk kayıttan field adlarını çıkar
var fields = Object.keys(record.data);
fields.forEach(function(f){
if (record.get(f) === 0) {
record.set(f, 99999);
}
});
// Bu ürün kodunu işlenmiş olarak işaretle
islenmisUrunKodlari[urunKodu] = true;
}
});
}
}
});
