Implementace datagridu od Romana Sklenare

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Klainer
Člen | 42
+
0
-

Dobrý den,
jsem začátečník v NETTE a chtěl bych využít datagrid od Romana Sklenáře, našel jsem tu verzi upravenou pro nové nette, ale vubec netuším jak ji rozchodit. Proto se ptám jak postupovat ? Stačí heslovitě, at se mám od něčeho odpíchnout.

Upravený datagrid: https://github.com/…DataGrid-5.3

Děkuji za rady!

Edit1:

Tak jsem nějak začal, stáhnul jsem knihovnu a rozbalil celou do složky libs.
V Presenteru jsem jsi vytvořil tuto metodu:

	protected function createComponentGrid($name)
	{
	    $grid = new DataGrid;
	    $model = new Model;

	    $ds = \dibi::dataSource('select * from  AKTUALNI_STAV_NADRZE');
		// Create a data source
		$dataSource = new \DataGrid\DataSources\Dibi\DataSource($ds);

		// Configure data grid
		$grid = new DataGrid;
		$grid->setDataSource($dataSource);


	    $this->addComponent($grid, $name);
	}

A pak volám v šabloně: @{control grid}

Nevím jestli to dělám dobře,
každopádně hned mám jednu chybku:

Fatal Error
Class 'Nette\Application\UI\Control' not found

File: ...\libs\DataGrid\DataGrid.php   Line: 37

27:     *
28:     * $presenter->addComponent($grid, 'componentName');
29:     * </code>
30:     *
31:     * @author     Roman Sklenář
32:     * @copyright  Copyright (c) 2009 Roman Sklenář (http://romansklenar.cz)
33:     * @license    New BSD License
34:     * @example    https://componette.org/search/?q=datagrid
35:     * @package    Nette\Extras\DataGrid
36:     */
37:    class DataGrid extends Nette\Application\UI\Control {
38:
39:        /** @persistent int */
40:        public $page = 1;

Používám prefixovou verzi Nette (Nette Framework 2.0.3 pro starší PHP 5.2 s prefixy) v defaultním nastavení s dibi.

EDIT2

Asi jsem pokročil:
class DataGrid extends Nette\Application\UI\Control
přepsat na: NControl

ale našla se tu další věc, kterou nevím jak přepsat na verzi s prefixi:

     $ds = \dibi::dataSource('select * from  AKTUALNI_STAV_NADRZE');
73:            // Create a data source
74:            $dataSource = new \DataGrid\DataSources\Dibi\DataSource($ds);

neví někdo jak na to ?

Editoval Klainer (28. 6. 2012 22:44)

llsm
Člen | 121
+
0
-

Zdravim, absolutne netusim, co to s tim aktualne delas a prijde mi, ze ty take ne… V promene $ds uz mas ulozeny dibi datasource, tak proc ho tam pak vytvaris nejak prapodivne znova?
Mam pocit, ze michas vic produktu dohromady. Tj ze sis stahl nejaky datagrid, ale zpusob jakym ho v tovarnicce vytvaris nalezi k jinemu produktu… Zkusim to udelat tak, jak si myslim, ze by pro ten tvuj melo byt spravne, ale sam si nejsem jisty…

<?php
protected function createComponentGrid()
{
    $grid = new DataGrid;

    $ds = dibi::dataSource('select * from  AKTUALNI_STAV_NADRZE');
    $grid->bindDataTable($ds);
    return $grid;
}
?>

Jinak ti doporucuji si nejdriv precist neco vic o zakladech programovani a objektovem programovani, protoze z toho kodu, ve kterem dvakrat vytvaris instanci Datagridu a pak instanci modelu, kterou vubec nepouzivas, mi prijde, ze moc nevis co delas…

Editoval llsm (29. 6. 2012 12:10)

Klainer
Člen | 42
+
0
-

Děkuji ti,
máš pravdu trošku jsem se v tom zamotal.
Samozřejmě že to tvé funguje… Dělalo mi tam ale problém jak přepsat komponentu, která vyuřívá jmenné prostory na komponentu která pojede pod php 5.2 bez nich …

Mno je toho ještě hodnotě na učení.