Přepínání výpisu a editace

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

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
+
0
-

Žá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ý.

Figa
Člen | 21
+
0
-

Děkuji mnohokrát. Nebyl by prosím jednoduchý příklad?

srigi
Nette Blogger | 558
+
0
-
<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
+
0
-

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)

Figa
Člen | 21
+
0
-

Děkuji to vypadá zajímavě a pokud by se to udělalo univerzální tak je to celkem elegantní. Pokud to, ale dobře chápu takto nevyužiji sílu nettích formů… Nebráním se dalším návrhům :) Ještě jednou děkuji

jtousek
Člen | 951
+
0
-

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:

  1. 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
  2. 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
+
0
-

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.

Ped
Člen | 64
+
0
-

Figa: mne to zni docela zajimave, v prvnich 3 vterinach jsem na tom nenasel nic spatneho. :) Klidne se pak pochlub pokud to zkusis, jestli jsi narazil na nejaky problem. 6 vterin pryc a porad nevidim zadny velky zadrhel… :D

Figa
Člen | 21
+
0
-

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.