Merhaba
Php ile veri kaynağıdan çektiğimiz verikümesini XML formatına çevirerek ext gridpanel nesnesi üzerinde gösterimini görücez.
Getdata.php
<?php
class DB {
function GetDatasetAsXML() {
$servername = ‘?’;
$username = ‘?’;
$password = ‘?’;
$connectionID = mssql_connect($servername, $username, $password);
mssql_select_db("?",$connectionID);
$result = mssql_query("select ContentID,Title from Contents Order By ContentID DESC");
$xmlresult = "<?xml version=\"1.0\" encoding=\"ISO-8859-9\" standalone=\"yes\"?>\n";
$xmlresult.="<Rows>\n";
while ($row = mssql_fetch_object($result)) {
$xmlresult.="\t<Row>\n";
$xmlresult.="<ContentID>".$row->ContentID."</ContentID>";
$xmlresult.="<Title>".str_replace("&","",$row->Title)."</Title>";
$xmlresult.="\t</Row>\n";
}
$xmlresult.="</Rows>";
mssql_close($connectionID);
return $xmlresult;
}
}
//XML ile çalışırken türkçe karakter problemi olmaması için ISO-8859-9
header("Content-type:text/xml; charset=ISO-8859-9");
$db = new DB();
echo $db->GetDatasetAsXML();
unset($db);
?>
Categories.js
Ext.onReady(function(){
// Store nesnesi veri saklamak için kullanılır.
// Sunucu(server-side) dan çekilen verinin istemci(client-side)
// tarafındaki halidir diyebiliriz özetle.
// verinin en son değişen hali store üzerinde tutulur.
// Aşağıdaki gridi bu categoryStore nesnesine bağladığınızda
// grid veya başka bir nesnede olabilir,grid üzerindeki veri de yaptığınız
// her değişiklik(ekleme,silme,değiştirme) store nesnesine yansıtılır.
// url : json veya xml formatındaki veri kaynağının adresi atanabilir
var categoryStore = Ext.create('Ext.data.XmlStore', {
fields: [
{
name: 'ContentID'
},
{
name: 'Title'
}],
autoLoad: true,
proxy: {
type: 'ajax',
url: 'getdata.php',
reader: {
type: 'xml',
root:'Rows',
record:'Row',
idProperty:'ContentID'
}
}
});
//Gridpanel nesnesi oluşturuyoruz.
//Gridpanelde göstereceğimiz veri kaynağını store özelliği ile belirtiyoruz.
//renderTo özelliği gridi nereden gösterecek onu belirtiyoruz.
var gridPanel=Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
store: categoryStore,
autoWidth:true,
height: 600,
title: 'Contents',
columns: [
{
text: 'No',
width: 50,
dataIndex: 'ContentID'
},
{
text: 'Başlık',
width: 600,
dataIndex: 'Title'
}
]
});
//instance üzerinden nesnenin üyelerine erişim
gridPanel.setTitle('Makaleler');
});
index.php
<!DOCTYPE html>
<html>
<head>
<title>extjs Php xml veri Okuma</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../extjs/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
<script src="../extjs/ext-all.js" type="text/javascript"></script>
<script src="Categories.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
Demo : http://yazilimarge.com/ext/xmlreadsample/
Kaynak Kod
Kaynaklar :
http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.XmlStore
http://docs.sencha.com/ext-js/4-0/#!/guide/grid
İsmail Kocacan (Yazılımcı Bozuntusu)
ismailkocacan at gmail com