Developer express - utisci pri razvoju

10 Jun, 2008

Interakcija između dva grida na web formi

Generalna — Autor thebata @ 14:16

Radeći jedan sajt uz pomoć Developer Express komponenti, naišao sam na problem kada je trebalo da postavim 2 grida na jednu stranicu i da se pri promeni fokusa na prvom gridu osvežavaju podaci u drugom. Na forumu sam pronašao sledeće rešenje.

1.u prvom gridu se podesi ClientInstanceName na npr. masterGrid. 

2. U ClientSideEvents u FocusedRowChanged se upiše sledeća metoda :

    function(s, e) {
        if (typeof(detailGrid) != 'undefined')
        detailGrid.PerformCallback(s.GetFocusedRowIndex());
     }

Ova metoda radi CustomCallBack sa parametrom koji predstavlja trenutno fokusirani red u master gridu.

3. u Load događaj stranice se upisuje sledeći kod

    string idtype = Convert.ToString(Session["IDType"]);
    if (idtype != string.Empty)
    {
       dsGroupRights.SelectParameters[0].DefaultValue = idtype;
       dgvRights.DataSourceID = "dsGroupRights";
       dgvRights.DataSource = null;
       dgvRights.DataBind();
     }

 Pri učitavanju stranice se prvo proverava da li postoji podešena vrednost koja se prosleđuje kao parametar. Ukoliko postoji, varijabla iz sesije se postavlja kao vrednost parametra SqlDataSource komponente koji filtrira podatke za drugi grid. 

4. Na CustomCallback događaj drugog grida izvršava se sledeći kod:

object values = dgvGroups.GetRowValues(dgvGroups.FocusedRowIndex, new string[] { "IDType" });

dgvRights.DataSource = null;

dgvRights.DataSourceID = string.Empty;

dsGroupRights.SelectParameters[0].DefaultValue = values.ToString();

Session["IDType"] = values.ToString();

dgvRights.DataSourceID = "dsGroupRights";

dgvRights.PageIndex = 0;

dgvRights.DataBind();

 5. Init događaj u ClientSideEvents drugog grida sadrži sledeći kod:

function(s, e) {

s.PerformCallback(masterGrid.GetFocusedRowIndex());

}

Nisam napomenuo da je i clientInstanceName drugog grida potrebno u ovom slučaju podesiti na detailsGrid 


Komentari


Dodaj komentar

Dodaj komentar





Zapamti me