Microsoft Forge
Microsoft Forge je Web portal za sve .NET, Sql Server i Windows fanove.

Manipulacija redovima gridview-a u hodu?

Latest post 05-31-2008 17:18 by janko. 9 replies.
  • 05-28-2008 22:17

    Manipulacija redovima gridview-a u hodu?

    Pozdrav svima, zelim sledece:

    U gridview-u, kao itemTemplate imam: <%# mojaMetoda(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "id"))) %>

    zelim mogucnost da iz metode mojaMetoda() (koja je u pozadinskom kodu) nekim redovima zabranim da se objave (u zavisnosti od id-a).

    Npr: necu id 3

    ***********************
    * id *       ime        *
    ***********************
    *  1 *     AAA         *
    ***********************
    *  2 *     BBB         *
    ***********************     <-- ovde mi nije iscrtao red sa id-om 3 jer sam mu to rekao iz pozadinskog koda.
    *  4 *     CCC         *
    ***********************

    Hvala.

                                                           Vladimir

     


     

     

    • Post Points: 29
  • 05-29-2008 10:35 In reply to

    • janko
    • Top 10 Contributor
    • Joined on 11-14-2007
    • Serbia
    • Posts 139
    • Points 6,573

    Re: Manipulacija redovima gridview-a u hodu?

    Vladimire, ovako na brzaka, mozda mozes da uradis nesto ovako:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       
    TvojObjekat to = (TvojObjekat)e.Row.DataItem;
        if (to.ID == nekiID)
           
    e.Row.Visible = false;
    }

     

    Ideja je da, kada se svaki pojedincani red databinduje, izvuces DataItem (i obavezno kastujes u objekat koji je bindovan), i zatim ispitasda li je taj ID onaj koji zelis da sakrijes.

    Nisam imao vremena da isprobam ovaj primer Sad ali bi trebalo da je tako nesto. Javi ukoliko bude bilo problema!

    Janko Jovanovic
    Software devloper, designer and artist
    Blogs: Janko at Warp Speed, Morning Break
    Gallery: http://gallery.dzovan.com

    Filed under:
    • Post Points: 29
  • 05-29-2008 14:50 In reply to

    Re: Manipulacija redovima gridview-a u hodu?

     E pa, pazi... on se ne iscrta (sto je ok), ali mi se grid ponasa kao da je on i dalje tu. Znaci, ako je grid na 5 redova, i ja skinem jedan. On mi onda iscrta 4 reda. A ja bih zeleo da mi grid totalno izignorise taj red....da ga dezintegrisem nekako i da se grid zadrzi na strukturi od npr. 5 vidljivih redova ili koliko vec stavim.

    • Post Points: 29
  • 05-29-2008 15:05 In reply to

    • janko
    • Top 10 Contributor
    • Joined on 11-14-2007
    • Serbia
    • Posts 139
    • Points 6,573

    Re: Manipulacija redovima gridview-a u hodu?

    Aha, ok. Koliko shvatam treba ti u stvari neki "preprocessing". Tu bi morao da eliminises te redove pre samo databindinga (ukoliko ti naravno oni ne trebaju za nesto kasnije). Tako vise ne bi postojali u kolekciji koja je vracena na klijenta. E sad, ne znam na koji nacin izvlacis te podatke iz baze?

    Janko Jovanovic
    Software devloper, designer and artist
    Blogs: Janko at Warp Speed, Morning Break
    Gallery: http://gallery.dzovan.com

    Filed under:
    • Post Points: 29
  • 05-29-2008 15:31 In reply to

    Re: Manipulacija redovima gridview-a u hodu?

    Da. Tako je.
    E, sad, sto se baze tice. Imam prvo jedan upit, kojim izvucem neke podatke iz baze. A posle iz tih podataka (preko DataBInder.Eval...) uzimam id-ove, pa uz pomoc tih id-ova dodam jos dodatnih podataka u red.
    Problem je sto ne zelim da mi se ID-ovi (odnosno, njihovi sadrzaji ponavljaju). Takodje, problem je to, sto to saznam tek u trenutku kad vec imam formiran grid, odnosno...u toku bindovanja, i onda ne znam kako da ponovo azuriram gridView.

    • Post Points: 29
  • 05-29-2008 15:40 In reply to

    • janko
    • Top 10 Contributor
    • Joined on 11-14-2007
    • Serbia
    • Posts 139
    • Points 6,573

    Re: Manipulacija redovima gridview-a u hodu?

    Ok. Pretpostavljam da grid bindujes preko sqldatasource kontrole ili na slicn nacin i da nemas neku data access klasu gde bi mogao da "odstranis" duple id-jeve?

    Sad ja ovako, malo, imam podpitanja, ali gledam da napravim primer koji je slican da bih mogao da isprobam neka resenja Smile

    Janko Jovanovic
    Software devloper, designer and artist
    Blogs: Janko at Warp Speed, Morning Break
    Gallery: http://gallery.dzovan.com

    Filed under:
    • Post Points: 29
  • 05-29-2008 15:52 In reply to

    Re: Manipulacija redovima gridview-a u hodu?

    Tako je

    • Post Points: 29
  • 05-29-2008 22:35 In reply to

    • janko
    • Top 10 Contributor
    • Joined on 11-14-2007
    • Serbia
    • Posts 139
    • Points 6,573

    Re: Manipulacija redovima gridview-a u hodu?

    Reply |Contact |Answer

    Malo sam pogledao po netu i pronasao nekoliko clanaka koji govore o tome da nazalost podaci koji se jednom binuju za gridview ne mogu na taj nacin da se brisu. Evo jednog korisnog clanka sa MS support-a: http://www.velocityreviews.com/forums/t119112-gridview-duplicate-removal.html gde je neko postavio pitanje kako da izbaci duplikate iz bindovanog grida i dobio odgovora da to ne moze da uradi nakon bindovanja.

    Ono sto bi mozda moglo da se uradi je da vezes gridview za ObjectDataSource i da filtriranje ID-jeva "spustis" za jedan lejer ispod. Da ti ODS gadja neku medju-klasu koja kupi podatke iz baze, filtrira i na taj nacim eliminises nepotrebne redove. Izgleda da je takvo neko resenje jedino moguce. Nazalost. :(

    Janko Jovanovic
    Software devloper, designer and artist
    Blogs: Janko at Warp Speed, Morning Break
    Gallery: http://gallery.dzovan.com

    Filed under:
    • Post Points: 29
  • 05-31-2008 16:47 In reply to

    Re: Manipulacija redovima gridview-a u hodu?

    Ovo nije lako uraditi ni u bazi. I tu mi je problem da pratim redove po vertikali (npr, ako mi je vrednost ista kao i u prethodnom redu da je ne prikazem), a da pri tom ne upotrebim neku sporost tipa kurzor ili temp tabela.

    I da li uopste kada bindujem podatke iz baze u grid on uzme svaki put sve podakte ili samo onih nekoliko koji su mi vidljivi?

    • Post Points: 29
  • 05-31-2008 17:18 In reply to

    • janko
    • Top 10 Contributor
    • Joined on 11-14-2007
    • Serbia
    • Posts 139
    • Points 6,573

    Re: Manipulacija redovima gridview-a u hodu?

    Slazem se. Onda bi neka medju-klasa bilo solidno resenje. Znaci sve podatke dovuces preko nekog data access objekta, zatim ih uporedis i odstranis redove koji ti ne trebaju i na tu metodu nakacis ObjectDataSource.

    Recimo, imas data access klasu koja ima sledeci metod:

    public List<NekiEntitet> GetAll()
    {
        // uzmes podatke iz bace preko data readera ili sl. i vratis listu
    }

    u nekoj medju klasi napravis metodu npr, ovakvu:

    public List<NekiEntitet> GetFilteredItems()
    {
         // filtriras podatke, recimo uporedjujes duplikate. ako koristis List<T>, mozes to da uradis sa Find ili FindAll
    }

    (Ako ne zelis ovoliko raslojavanje ovo sve moze da uradi jedna klasa i jedan metod.) Na klijentu stavis ObjectDataSource, i uradis ovako nekako:

    <asp:ObjectDataSource ID="odsNekoIme" runat="server" TypeName="NekiEntitet" DataObjectTypeName="NekaKlasa"
            SelectMethod="GetFilteredItems" />

    I na kraju, gridu zadas DataSourceID="odsNekoIme". To bi trebalo da resi problem. Ako ne koristis List<T>, mozes to da uradisi preko dataseta ili na bilo koji drugi nacin. Ja cesto upotrebljavam List<T> pa sam zato stavio to kao primer. Sustina ovde je da ces stranicu malo menjati, samo umesto SqlDataSource stavljas ObjectDataSource, koji ce umesto baze direktno da gadja klasu, a ta klasa bazu. Znaci imaces malo raslojavanja ali je bitno da ne menjas ni klijenta ni bazu, vec samo "umeces" u stvari jedan filter.

    Grid vezuje sve podatke koji su dovuceni sa servera i radi klijentski paging, tako da ces u svakom momentu imati celu listu, osim ukoliko ne radis paging u bazi. Ukoliko se opredelis za ovakav pristup, mozes da pogledas treci primer u demo kodu sa MSDN day-a, upravo je ovo odradjeno + stavio sam i paging u bazi. http://msforge.net/blogs/janko/archive/2008/05/29/demo-kod-i-slajdovi-sa-predavanja-quot-asp-net-primeri-za-postizanje-boljeg-korisni-kog-iskustva-quot.aspx

    Janko Jovanovic
    Software devloper, designer and artist
    Blogs: Janko at Warp Speed, Morning Break
    Gallery: http://gallery.dzovan.com

    Filed under:
    • Post Points: 7
Page 1 of 1 (10 items) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems