Vlozenie pola dat do Grida

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

Ahojte,

ako si poslem vypocitane data z prezentera do grida?

	/**
	* @return DistributionPlanGrid
	*/
	protected function createComponentDistributionPlanGrid()
{
		$grid = new DistributionPlanGrid();

		return $grid;
	}

vytvori sa mi Grid, ale ak data netaham z db ale vypocitaju sa po vyplneni formu, tak ich nasledne neviem dostat do grida. Viete mi poradit, ako na to?

Dakujem

Pavel Kravčík
Člen | 1196
+
0
-

Nezkoušel jsem, ale co v succcesu formuláře něco jako:

	$this['distributionPlanGrid']->setModel(['zvire' => 'pes']);

Editoval Pavel Kravčík (8. 4. 2016 11:31)

Juraj_
Člen | 22
+
0
-

Pavel Kravčík napsal(a):

Nezkoušel jsem, ale co v succcesu formuláře něco jako:

	$this['distributionPlanGrid']->setModel(['zvire' => 'pes']);

toto mi uz pisalo ked som sa to snazil sam obist:

Nette\InvalidStateException
Cannot send header after HTTP headers have been sent (output started at C:\xampp\htdocs\TransportCompany\vendor\tracy\tracy\src\Tracy\Dumper.php:75).

neviem, ako to obist…

Pavel Kravčík
Člen | 1196
+
0
-

Zkusil jsem na čistém presenteru a v pohodě funguje. Pravděpodobně budeš mít chybu někde u sebe v jiné části kódu.

	// Presenter
	protected function createComponentForm()
{
    $form = new \Nette\Application\UI\Form();

    $form->addHidden('id')
        ->setValue(1);

    $form->addText('animal');

    $form->addSubmit('send');

    $form->onSuccess[] = [$this, 'successForm'];

    return $form;
}

public function successForm($form, $values)
{
    $this['grid']->setDataSource([['id' => $values->animal, 'animal' => $values->animal]]);
    $this['grid']->redrawControl();
}

protected function createComponentGrid($name)
{
    $grid = new \Ublaboo\DataGrid\DataGrid($this, $name);

    $grid->setDataSource([]);

    $grid->addColumnText('animal', 'Zvíře');

    return $grid;
}

	// Latte
	{control form}

	{control grid}
Juraj_
Člen | 22
+
0
-

Pavel Kravčík napsal(a):

Zkusil jsem na čistém presenteru a v pohodě funguje. Pravděpodobně budeš mít chybu někde u sebe v jiné části kódu.

	// Presenter
	protected function createComponentForm()
{
    $form = new \Nette\Application\UI\Form();

    $form->addHidden('id')
        ->setValue(1);

    $form->addText('animal');

    $form->addSubmit('send');

    $form->onSuccess[] = [$this, 'successForm'];

    return $form;
}

public function successForm($form, $values)
{
    $this['grid']->setDataSource([['id' => $values->animal, 'animal' => $values->animal]]);
    $this['grid']->redrawControl();
}

protected function createComponentGrid($name)
{
    $grid = new \Ublaboo\DataGrid\DataGrid($this, $name);

    $grid->setDataSource([]);

    $grid->addColumnText('animal', 'Zvíře');

    return $grid;
}

	// Latte
	{control form}

	{control grid}

Dakujem tvoj priklad mi pomohol vyriesit problem. :)

Juraj_
Člen | 22
+
0
-

Vedel by si mi este povedat, ci ti ten grid aj sortuje? Pretoze mne vynuluje data(kedze je to len po formSuccess) a neviem ci tam data nejak napchat cez session alebo ako by som ich teraz mohol aj filtrovat/ sortovat a podobne…?

Dakujem