ExtJS তে Grid একটি অত্যন্ত শক্তিশালী এবং কাস্টমাইজেবল UI কম্পোনেন্ট যা ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। Grid Columns এবং Custom Renderers ব্যবহার করে আপনি ডেটাকে আরও রিচ এবং ইন্টারেক্টিভভাবে উপস্থাপন করতে পারেন। গ্রিডের প্রতিটি কলাম ডেটার একটি নির্দিষ্ট অংশ উপস্থাপন করে এবং Custom Renderer ব্যবহার করে সেই কলামের ডেটাকে কাস্টমাইজ করা যায়।
Grid Columns হলো সেই অংশ যা গ্রিডের ভেতরে ডেটা প্রদর্শন করে। প্রতিটি কলাম একটি নির্দিষ্ট ডেটা ফিল্ডের জন্য তৈরি হয় এবং dataIndex
এর মাধ্যমে যে ফিল্ডের ডেটা ওই কলামে প্রদর্শিত হবে তা নির্ধারণ করা হয়।
text
: কলামের শিরোনাম বা লেবেল।dataIndex
: মডেল বা স্টোরের ফিল্ড যার মাধ্যমে ডেটা কলামে প্রদর্শিত হবে।flex
: কলামের প্রস্থকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে ব্যবহার হয়।width
: কলামের দৈর্ঘ্য নির্ধারণ করে।sortable
: কলামের মধ্যে সোর্টিং সক্ষম করে।গ্রিড কলাম উদাহরণ:
Ext.create('Ext.grid.Panel', {
title: 'User List',
store: {
fields: ['id', 'name', 'email'],
data: [
{id: 1, name: 'John', email: 'john@example.com'},
{id: 2, name: 'Jane', email: 'jane@example.com'}
]
},
columns: [
{ text: 'ID', dataIndex: 'id', width: 50 },
{ text: 'Name', dataIndex: 'name', flex: 1 },
{ text: 'Email', dataIndex: 'email', flex: 2 }
],
renderTo: Ext.getBody()
});
এখানে, columns
এর মধ্যে তিনটি কলাম ডিফাইন করা হয়েছে: ID
, Name
, এবং Email
। dataIndex
দ্বারা প্রতিটি কলাম নির্দিষ্ট ডেটা ফিল্ডের সাথে সংযুক্ত।
Custom Renderer ব্যবহার করে আপনি গ্রিড কলামে প্রদর্শিত ডেটাকে কাস্টমাইজ করতে পারেন। এটি একটি ফাংশন যা কলামের ডেটা প্রদর্শনের আগে কাজ করে, এবং আপনি চাইলে ডেটা ফরম্যাট, রঙ, আইকন, বা অন্যান্য কাস্টম UI এলিমেন্ট যুক্ত করতে পারেন।
renderer
: এটি একটি ফাংশন যা কলামের ডেটাকে কাস্টমাইজ করে।Custom Renderer উদাহরণ:
Ext.create('Ext.grid.Panel', {
title: 'User List',
store: {
fields: ['id', 'name', 'email', 'status'],
data: [
{id: 1, name: 'John', email: 'john@example.com', status: 'Active'},
{id: 2, name: 'Jane', email: 'jane@example.com', status: 'Inactive'}
]
},
columns: [
{ text: 'ID', dataIndex: 'id', width: 50 },
{ text: 'Name', dataIndex: 'name', flex: 1 },
{ text: 'Email', dataIndex: 'email', flex: 2 },
{
text: 'Status',
dataIndex: 'status',
renderer: function(value) {
if (value === 'Active') {
return '<span style="color:green;">' + value + '</span>';
} else {
return '<span style="color:red;">' + value + '</span>';
}
}
}
],
renderTo: Ext.getBody()
});
এখানে, Status
কলামের জন্য একটি custom renderer ব্যবহার করা হয়েছে যা Active
স্ট্যাটাসকে সবুজ এবং Inactive
স্ট্যাটাসকে লাল রঙে প্রদর্শন করবে।
renderer
ফাংশনটি সাধারণত তিনটি প্যারামিটার গ্রহণ করে:
value
: কলামে প্রদর্শিত হওয়া ডেটার মান।metaData
: ডেটার মেটাডেটা, যেমন সেলটি কোথায় রেন্ডার হবে, সেল ক্লাস ইত্যাদি।record
: সেই রেকর্ডের তথ্য যেটি কলামের জন্য প্রদর্শিত হচ্ছে।আপনি এই প্যারামিটারগুলো ব্যবহার করে কলামের ডেটা কাস্টমাইজ করতে পারবেন।
উদাহরণ:
{
text: 'Status',
dataIndex: 'status',
renderer: function(value, metaData, record) {
if (value === 'Active') {
metaData.tdStyle = 'background-color: green; color: white;';
return value;
} else {
metaData.tdStyle = 'background-color: red; color: white;';
return value;
}
}
}
এখানে, কলামের রেন্ডারিং এর সময় metaData
এর মাধ্যমে সেলটির ব্যাকগ্রাউন্ড এবং ফন্ট কালার কাস্টমাইজ করা হচ্ছে।
HTML ফরম্যাটিং: কলামে ডেটাকে HTML ট্যাগের মাধ্যমে ফরম্যাট করা।
উদাহরণ:
renderer: function(value) {
return '<b>' + value + '</b>'; // ডেটা বোল্ড ফন্টে প্রদর্শিত হবে
}
আইকন ব্যবহার: কলামের ডেটাতে আইকন বা চিত্র যোগ করা।
উদাহরণ:
renderer: function(value) {
if (value === 'Active') {
return '<img src="active_icon.png" /> ' + value;
} else {
return '<img src="inactive_icon.png" /> ' + value;
}
}
কাস্টম স্টাইল: কলামের সেল বা টেক্সট কাস্টম স্টাইল করতে CSS স্টাইল যোগ করা।
উদাহরণ:
renderer: function(value) {
return '<span style="color:blue; font-weight:bold;">' + value + '</span>';
}
dataIndex
দ্বারা নির্দিষ্ট ডেটা ফিল্ডের সাথে যুক্ত করা হয়।এভাবে, ExtJS গ্রিডে Grid Columns এবং Custom Renderers ব্যবহার করে আপনি আপনার ডেটা প্রদর্শনকে আরও রিচ, ইন্টারেক্টিভ এবং কাস্টমাইজড করতে পারেন।
Read more