Archief - [PROG][ASP-C#] Gridview + popup

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

celiske

Legacy Member
Ik ben bezig met een project in ASP.net en C#. De situatie is als volgt:
Ik heb een gridview met enkele kolommen en ook een kolom met een linkbutton. Als ik op deze linkbutton klik zou er een popup moeten verschijnen met info over de geselecteerde rij. (ik werk dus niet met de standaard select button, maar werk met de onclick methode van de button). Maar hier duiken dus vele problemen op. Ik vang nl. 2 events van de gridview op: OnSelectedIndexChanged (voor de geselecteerde rij te weten te komen) en OnRowDataBound (voor de popup te openen). Mijn probleem is dat eerst de rowdatabound wordt uitgevoerd en daarna pas de selectedindexchanged (eerst wordt datagrid gevuld, daarna pas geklikt) en zo krijg ik dus nooit mijn geselecteerde rij in de popup. Mss heel ingewikkelde uitleg voor wat het is, en mss bestaat er een veel simpelere manier..
hier stukjes code:

Code:
protected void grdEvenementen_RowDataBound(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {      
      LinkButton button = (LinkButton)e.Row.FindControl("LinkButton1");     
      button.Attributes["OnClick"] = GetOpenPopupWindowScript(400, 400, url, "Inschrijven");
    }                                                                    
  }
-----------------------------------
  protected void grdEvenementen_RowDataBound(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {      
      LinkButton ctrl = (LinkButton)e.Row.FindControl("LinkButton1");
      url = "Inschrijven.aspx?EvenementID=" + id;

// GetOpenPopupWindowScript = functie voor popup te openen..
      ctrl.Attributes["OnClick"] = GetOpenPopupWindowScript(400, 400, url, "Inschrijven");
    }                                                                    
  }
-----------------------------------
  protected void grdEvenementen_OnSelectedIndexChanged(Object src, EventArgs e)
  {
    GridViewRow row = grdEvenementen.SelectedRow;
    grdEvenementen.SelectedRow.BackColor = System.Drawing.Color.LightGray;
    id = grdEvenementen.SelectedDataKey.Value.ToString();
  }

Alvast bedankt

sebbonny

Legacy Member
Waarom zet je het COMMAND property van je linkbutton niet gewoon op SELECT? (of heb je dit gedaan?)

Op die manier gaat je linkbutton werken als een gegenereerde select.

BloodSeaker

Legacy Member
Javascript is the way

Je hebt gridview, je zet daar een simpel labeltje in.
Vervolgens geef je je row een ID mee als attribuut.
Datzelfde id ga je dadelijk ook nodig hebben: je doet immers
labelken.attributes.add("onclick", destring);

In dien destring zit dan code als

window.open(en hier de url en parameters voor grootte window en zo); document.getElementById(DEN ID).className = "selected";

Als je op je label klikt wordt met javascript dan de class gezet van die rij en wordt die gehighlight. Als je dan de andere rijen wilt 'deactiveren', dan roep je een functie op in javascript die alle rijen afloopt en de className verwijdert, en vervolgens op de correcte rij dat toevoegt.

Als ik wat tijd had, kon ik de hele code tikken, maar helaas :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan