DibiGrid – Nový DataGrid pro Dibi

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

Ahoj, je nějaká možnost při inline editaci se selectboxem předat vlastní value?

Jde o případ kdy mám v tabulce v db uložené pouze ID, které zároveň potřebuju při editaci uložit, ale do Tabelly vypisuji text, který se za ID skrývá v relační tabulce.

Tzn. že při editaci mám selectbox s <option value=„id“>TEXT</option>. V Tabelle se mi zobrazuje TEXT a proto, když chci položku editovat, tak se mi automaticky nevybere správný option.

Chtěl bych při editování mít vybraný správnou hodnotu. Jak na to?

Díky za rady.

Jack06
Člen | 168
+
0
-

Lze nějakým způsobem odchytit exception a vepsat ji do flashmessages třeba při vytváření záznamu. Když mám unig nad sloupcem, tak mi to hodí dibidriverexception, kterou bych rád zachytil a vepsal, aby uživatel viděl, proč nelze přidat záznam.
Díky

whipster
Člen | 17
+
0
-

Tabella je geniální záležitost nicméně není ošetřená proti SQL INJECTION!

<?php
public function filtrHelper($val, $col, $type) {

            switch($type) {
                case Tabella::CHECKBOX:
                        return "[$col] = ". ($val == 'on' ? '1' : '0');
                case Tabella::NUMBER:
                case Tabella::TIME:
                case Tabella::DATETIME:
                case Tabella::DATE:
                        return "[$col] = '$val'"; //Tady
                default:
                        return "[$col] LIKE '".$val."%'"; //a TADY
            }
        }

?>

Editoval whipster (24. 2. 2012 11:00)

whipster
Člen | 17
+
0
-

Správně to má vypadat takto:

<?php
public function filtrHelper($val, $col, $type) {
            switch($type) {
                case Tabella::CHECKBOX:
                        return "[$col] = ". ($val == 'on' ? '1' : '0');
                case Tabella::NUMBER:
                case Tabella::TIME:
                case Tabella::DATETIME:
                case Tabella::DATE:
                        return array("%n=%s",$col,$val);
                default:
                        return array("%n LIKE %s", $col, $val."%" );
            }
        }
?>
Prochy
Člen | 91
+
0
-

Zdarvim,
může mi prosím někdo vysvětlit jak funguje filtr podle data?
Nemůžu na to přijít, snažim se do dema napsat všechno možný, ale pokaždý mi filtr vrátí nula řádků.
Děkuji

jannemec
Člen | 73
+
0
-

Ahoj, trochu mě zlobily checkboxy – vždy se odesílali jako on – vyřešila to úprava js

původní
row.find(„input, textarea, select“).each(function() {
key = name+„-“+$(this).attr(„name“);
payload[key] = $(this).val();
 });

nahrazeno za
row.find(„input, textarea, select“).each(function() {
key = name+„-“+$(this).attr(„name“);
if ($(this).is(‚input:checkbox‘)) {
payload[key] = $(this).is(„:checked“) ? 1 : 0;
} else {
payload[key] = $(this).val();
}
 });

v chrome nyní bez problému

JN

vojty
Člen | 19
+
0
-

Zdravím,

stáhnul jsem si poslední verzi Tabelly a nemůžu ji rozchodit

Tabella.php:

<?php
	public function loadState(array $params) {
		$default = $this->params;
		parent::loadState($params); // radek 110 tady mi to vyradi parametry
		$this->params = $this->params + (array) $default;
	}
?>

na radku 110 mi to vyNULLuje parametry (limit, sort..atd.)

Setkal jste se někdo s něčím podobným?

Díky

V.

babcca
Člen | 23
+
0
-

Nette komponenty maji vlastni protected promenou $params (je to opravdu genialni :D, si mohlo nette rovnou rezervovat treba promenou $id, nebo $model ;), hodil by se nejaky „nette namespace“ ).
Reseni je jednoduche, v tabelle si prejmenuj promenou $params na neco jineho (napriklad $paramsTabella), pak to jiz bude „fungovat“. Bohuzel je videt ze projekt je uz mrtvi a nikdo se o nej uz asi moc nestara, ale muzes zkusit opravit tydle chyby a poslat pull request na github :).

babcca
Člen | 23
+
0
-

pro lepsi reseni:

  1. prejmenuj si protected promenou $params na neco jako $paramsDefault
  2. to same udelej i v kontruktoru
  3. prepis load state:
<?php
public function loadState(array $params) {
    parent::loadState($params);
    foreach($this->defaultParams as $name => $value)
    {
      if (!isset($this->params[$name]))
      {
        $this->params[$name] = $value;
      }
    }
}
?>

Nette nejspise zmenilo sve chovani a nastavuje persistetnim promennym null pokud se nevyskytuji v url.