Ublaboo datagrid resp Form s pouzitim Select2

pp
Člen | 50
+
0
-

Ahoj,
pouzivam Ublaboo datagrid, kde pro nektere selecty zkousim pouzit knihovnu Select2 a mam zjednodusene kod:

$grid->addInlineEdit()->onControlAdd[] = function(Nette\Forms\Container $container){
	...
    $container->addSelect('partner_id', '')->setPrompt('Vyberte')->setHtmlAttribute('class', 'select2');
	...
};
var selectElement = $('#frm-testForm-partner_id');
        selectElement.select2({
            placeholder: 'Vyberte možnost',
            minimumInputLength: 1,
            allowClear: true,
            width: 'auto',
            ajax: {
                url: {link getPartners!},
                dataType: 'json',
                delay: 250,
                data: function (params) {
                    return {
                        q: params.term
                    };
                },
                processResults: function (data) {
                    return {
                        results: data.items
                    };
                },
                cache: true
            }
        });
$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values): void {
            bdump($values);
        };

Prestoze predavam spravne vybranou hodnotu ‘partner_id’ tak po onSubmit se zobrazi jako NULL (na rozdil od jinych vyberovych polozek – problem mam jen s tim, na kterym mam poveseny ‘Select2’). Asi to nejak souvisi s validaci dat v kombinaci s AJAX pozadavkem.
Podobne se mi to chova u obycejneho formulare, kde se k datum dostanu aspon pomoci ‘getHttpData()’ ale u datagridu nevim jak.

diky za rady

mskocik
Člen | 61
+
0
-

Tvoj problem je v tom, ze dany select (v Nette) nema definovane ziadne $options. Nette tym padom zahodi danu hodnotu, lebo sa nevyskytuje v ramci $options pola, ktore je prazdne defaultne. V beznom formulari si schopny sa k tej hodnote dostat cez metodu getRawValue(). V datagride by _si mal byt_ schopny dostat sa k tej hodnote takto:

$grid->getInlineEdit()->onSubmit[] = function ($id, Nette\Utils\ArrayHash $values) use($grid) {
  $values->partner_id = $grid['filter']['inline_edit']['partner_id']->getRawValue();
  // code...
};

Pisem to z hlavy, netestoval som to, ci to bude fungovat

pp
Člen | 50
+
0
-

Super, tohle je jednoduchy a funkcni presne jak pises. Diky