85 messaggi dal 05 gennaio 2006
Salve, ho una grid view con una serie di record
Ho un HyperLinkField definito con testo Apri che mi dovrebbe

1. Aprire una nuova finestra contenente il dettaglio di quel record.
2. Dovrei impostare le dimensioni della finestra (tipo pop up)
3. Nella nuova pagina avrei bisogno dell'ID del record da cui è stata chiamata la pagina (un campo della GRIDVIEW)

Volevo impostare una Session Variable per gestirlo nella nuova pagina.
Ho provato a catturare l'evento Griglia_SelectedIndexChanged ma questo viene scatenato se nella griglia è presente AutoGenerateSelectButton=True.

Grazie per la collaborazione.

Franco.
dei utilizzare un pò di javascrip.

per prima cosa devi gestire l'evento RowDataBound, recuperaee l'id dalla fonte dai, fatto questo recuperi devi iniettare il javascript in un HyperLink.

se riesco a trovare un pò di tempo di posto un esempio.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
85 messaggi dal 05 gennaio 2006
Ma il RowDataBound non si verifica quando viene preparata la griglia prima del rendering? Per cui quando clicko sull'Hyperlink non si scatena.

Dovrei fare, ma non so come, catturare l'evento click sull'hyperlink e li fare

response.redirect("Mypage.aspx?"id= Gridview.Selectedrow.cells[0].Text)

Ma si può dichiarare un evento click per una colonna di una gridview ?

Ciao.
appunto per che si verifica prima, puoi creare un link ad hoc che apra una "popup", deno devi catturare nessuno evento lato server alla pressione del link.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
ti faccio un piccolo esempio, nella tua pagina aspx aggiungi il seguente javascript:

    <script language="javascript" type="text/javascript">
    function OpenWindow(strField)

            {

                        window.open('Details.aspx?field=' + strField, 'Details', 'width=250,height=190,resizable=yes');

            }

    </script>


il tuo GridView deve avere questa semplice template:

           <asp:TemplateField>
                    <ItemTemplate>
                       
                        <asp:HyperLink ID="MyLink" runat="server"></asp:HyperLink>
                    </ItemTemplate>
                </asp:TemplateField>


nel codebehind della pagina:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType == DataControlRowType.DataRow)
        {
            HyperLink _hyperlink = e.Row.FindControl("MyLink") as HyperLink;

            if(_hyperlink != null)
            {
                _hyperlink.NavigateUrl = "javascript:;";
                _hyperlink.Text = "vai";
                _hyperlink.Attributes.Add("onclick", string.Format("OpenWindow('{0}')", GridView1.DataKeys[e.Row.RowIndex].Value));
            }
            else
            {
                Trace.Warn("Impossibile trovare l'istanza del controllo");
            }
        }
    }


in pratica recupero l'istanza del link nella righa, e imposto le varie proprietà

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
85 messaggi dal 05 gennaio 2006
Come faccio ad iniettare codice Javascript nel controllo ASP ?

Ho scoperto che se una colonna della Gridview viene impostata a VISIBLE=FALSE
se cerchi di ottenereil valore della cella con Griglia.Rows(index).Cells(2).Text

il valore di ritorno è blank,mentre se Visible = True il valore è corretto.

Sapete come si può recuperare il valore di una colonna non visualizzata nella griglia ? Forse sul OBjectDataSource ? Ma come si referenziano le colonne sul datasource ?

Ciao.
85 messaggi dal 05 gennaio 2006
Mi scuso per la domanda delle 17.13 quando Marco aveva postato una cosa molto "fig@" e che era la risposta alla mia domanda.
Non vedevo quel post sul browser.

Nel frattempo avevo cercato soluzione alternativa (anche se artigianale)

Ho tolto hyperlink
Ho inserito un button nella gridview con lo stile impostato a LINK
Poi nell'evento rowcommand della griglia ho piazzato questo

Griglia.Columns(2).Visible = True
Dim myid as string = Griglia.Rows(index).Cells(2).Text
Display the selected author.
Griglia.Columns(2).Visible = False
Message.Text = "Codice: "& myID

Il visible=true permette il recupero del valore altrimenti .Cells(2) torna blank

Grazie ancora a Marco ora provo con i tuoi suggerimenti
di nulla

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.