Přepínání výpisu a editace
- Figa
- Člen | 21
Ahoj, jak nejlépe řešit tuto situaci ve stylu Nette-Like? V šabloně vypisuji data z DB a na konci řádku bych chtěl mít tlačítko Edit a po kliknutí na něj by se řádek změnil na form který by se dal upravit a odeslat. To všechno samozřejmě přes AJAX. Něco podobného se řešilo tady https://forum.nette.org/…pomoci-ajaxu , ale přeci jen už je to starší. Omlouvám se pokud je to stupidní dotaz, ale opravdu mě zajímá jak se to v praxi řeší.
- jtousek
- Člen | 951
Žádný Nette recept na tohle nemám. Sám to řeším tak, že to co je editovatelné takhle inline má nějaké datové atributy a obslužný js si to najde, navěsí události na vytvoření inputu i odeslání. Když se napíše plugin do jquery a makro na generování těch atributů tak je to hezky automatický.
- srigi
- Nette Blogger | 558
<li>Soms lorem ipsum<span class="editTlacitko">edit</span></li>
$(function(){
$('.editTlacitko').click(function(){
$(this).parent().append('
<input type="text" name="foo" />
<input class="dosubmit" type="submit" value="save" />
');
});
$('.dosubmit').click(function(){
var bar = $(this).prev().val();
$.ajax({
url:'server.tdl/routa?do=signal',
type:'POST',
data:{foo:bar},
dataType:'json',
success:function(data){
// console.info(data);
}
});
});
});
Pisane z hlavy, je to len taky nastrel.
Editoval srigi (25. 11. 2010 16:13)
- jtousek
- Člen | 951
Ta událost click na .dosubmit nebude fungovat. Muselo by se použít
.live('click', function() {...})
. Tu URL které je v tomhle
nástřelu napevno posílám v atributu data-link, aby se to dalo použít
univerzálně. Posílám si těch datových atributů víc, ale pro základní
funkčnost to takhle nějak v podstatě stačí.
Editoval jtousek (25. 11. 2010 16:19)
- jtousek
- Člen | 951
Přesně tak Nettí formuláře na othle vůbec nevyužiješ. Připadají mi na to úplně nevhodné.
Jen ještě dvě poznámky:
- bylo by dobré nějak vyřešit validaci a případné chyby (uživatel zadal co neměl) – sám to vyřešené nemám
- doporučuju u inputu nezobrazovat tlačítko „Odeslat/Uložit“ a naučit ho konečně používat Enter – zachytíš pomocí události keyup (klávesa 13), potom je i zbytečné ten input obalovat tagem form
- Figa
- Člen | 21
Děkuji, ale stále to není to co hledám. Možná kdyby se už při renderu té tabulky vytvořili dva řádky jeden s formem a jeden bez formu a ten s formem by se automaticky schoval po kliku na Edit by se schoval ten bez formu. Tím pádem by se využily nette forms a snad by se to dalo naroubovat na DataGrid a myslím, že by to bylo docela elegantní. Rád si poslechnu vaše názory.
- Figa
- Člen | 21
Tak jsem to nějak zbastlil a funguje to, ovšem zdaleka ne dle mých představ. Největším problémem je donutit form render aby vykreslil form jako jeden řádek tabulky. Nějaké nápady? nejelegantnější řešení by bylo přidat tuto feature do DataGrid. Snad by to nebyl takový problém, až na to že jednotlivé řádky nemají žádné id, takže je není jak schovat. Byl bych rád kdyby autoři DG napsali nějaké vyjádření k té myšlence implementace. Pokud by byl zájem snad bych to byl i schopen implementovat sám, ale v nette jsem nováček a nebylo by to asi nic moc. Děkuji za odpovědi.