Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    devexpress datagrid on row click

    ciao a tutti,
    ho provato a fare una ricerca all'interno del forum per vedere se qualcuno conosce meglio di me il funzionamento di questo spettacolare controllo ma non ho trovato nulla quindi provo adaprire un thread nella speranza che qualcuno lo abbia gia usato.


    Sto cercando di capire come fare per aggiungere un link su ogni riga che punti ad una pagina di dettaglio passandogli in parametro l'id dell'oggetto che sto andando ad aprire (la pagina di dettaglio me la costruisco io).

    ho aggiunto questo tag che gestisce l'evento (lato client) del click sulla riga.

    codice:
    <ClientSideEvents RowClick="function(s, e) {
    	location.href = detail.aspx;
    }" />

    è perfetto funziona!
    però non ho idea di come fare a passare alla pagina detail.aspx un parametro il cui valore è contenuto in una delle celle della riga.

    Qualcuno di voi sa come si fa?
    come si usano i parametri "s" ed "e" della funzione?
    posso utilizzare uno di questi per accedere ai valori delle celle nella riga?
    se si come?


    grazie mille
    citrus

  2. #2
    Segui una strada più semplice. Per richiamare la pagina con i dettagli non utilizzare un funzione lato browser (javascript) ma rimani con la programmazione lato server (aspx).

    Immaginando che il tuo campo si chiami ID e tralasciando i vari parametri del gridview potresti fare così.

    codice:
        
    <asp:GridView ID="GridView" DataSourceID="XmlDataSource" runat="server" AutoGenerateColumns="false">
    <Columns>
    <asp:HyperLinkField DataNavigateUrlFields="id" DataNavigateUrlFormatString="detail.aspx?id={0}">Dettagli</asp:HyperLinkField>
    </Columns> 
    </asp:GridView>
    <asp:XmlDataSource ID="XmlDataSource" DataFile="lista.xml"  runat="server" />
    Se vuoi provare il codice crea un file lista.xml fatto così:
    codice:
    <?xml version="1.0" encoding="utf-8" ?>
    <list>
      <item id="22" />  
      <item id="38" />
    </list>
    fammi sapere
    http://www.softgens.com

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ciao!
    grazie mille per la risposta, dopo mille peripezie oggi sono riuscito a risolvere il mio problema!
    Purtroppo non è affatto chiaro nella documentazione come vengono gestite le classi lato client, ma con un po' di fatica e mille ricerche su internet sono riuscito a capire come fare.

    ecco il codice, è semplicissimo:

    codice:
    [...]
    <ClientSideEvents RowClick="function(s, e) {myGridView.GetRowValues(e.visibleIndex, 'campo1;campo2;campo3', openModalWindow);}" />
    [...]
    
    
    <script language = "javascript">
    function openModalWindow(values){
       var campo1 = values[0];
       var campo2 = values[1];
       var campo3 = values[2];
    
       [...]
    }
    </script>
    questo codice rileva i valori di campo1, campo2, campo3 della riga selezionata nella grid view, e li passa alla funzione javascript "openModalWindow" che ho inserito nella pagina.

    Questa funzione apre una finestra modale passando alla pagina target i valori della riga!

    Attenzione!
    Su questa cosa ci ho perso una giornata intera:
    Nel caso in cui i campi da passare siano più di uno questi devono essere separati da ";" e la funzione javascript li riceve come un unico array.
    Così dice la documentazione ufficiale, ma nel caso in cui il campo da passare sia uno soltanto la funzinoe javascript che lo riceve non lo vede come array bensì come una variabile stringa normale.

    quindi un operazione come questa
    codice:
    <script language = "javascript">
    function openModalWindow(values){
       var campo1 = values[0];
       [...]
    }
    </script>
    vi popolerà il campo1 con un valore "undefined" fino a farvi impazzire (come è successo a me)


    il codice corretto in questo caso è:
    codice:
    <script language = "javascript">
    function openModalWindow(values){
       var campo1 = values;
       [...]
    }
    </script>

    ..sarà banale ma io proprio non lo sapevo


    Non ho capito molto bene quale fosse la tua soluzione e purtroppo ora non ho il tempo di guardarla ma appena ho un attimo di tempo prometto che ci do uno sguardo.

    Ti ringrazio comunque per la risposta.


    ps: per la cronaca:

    i parametri "s" , "e" sono l'equivalente javascript di "object sender" e "eventArgs e" lato server.
    Per capire quali siano i rispettivi metodi e proprietà bisogna cercare nella documentazione ufficiale la classe lato server inserendo la parola "Client" dopo il prefisso "Asp".

    se ad esempio cercate i metodi javascript della classe "AspGridView" dovrete cercare "AspClientGridView".

    ciao a tutti
    citrus

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.