Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Datagrid]Effetti particolari su datagrid

    Salve a tutti, avrei la necessità di effettuare questo tipo di operazione sulla mia datagrid: come tutti ben sapete una datagrid è divisa in righe e vorrei che, al passaggio del mouse su una riga, venga visualizzata nella webform una informazione, che può essere una label così come possono essere label, textbox, checkbox ecc.
    Ovviamente al passaggio del mouse su un'altra riga le info laterali devono cambiare
    Ora io chiedo, prescindendo dai dati che saranno estratti di volta in volta da un database (ammesso che sia una operazione possibile in questo contesto), è possibile fare una cosa del genere??

    Nel caso in cui sia troppo macchinosa e/o impossibile da realizzare, c'è la possibilità di realizzare una colonna con hyperlink all'interno della datagrid che mi renda visibile=True oppure visible=False la serie di label, textbox, checkbox a cui facevo riferimento prima??

    Grazie per le eventuali risposte

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    La prima cosa di cui prendere atto presumo sia il fatto che una simile funzionalità debba comunque essere implementata per l'esecuzione sul client tramite JavaScript: deve esserci, quindi, codice script eseguito lato client che venga richiamato quando il mouse si sofferma sull'elemento di cui deve essere visualizzata l'informazione, a meno che questa non debba essere rappresentata in modo così semplice da consentire l'adozione di un banale tooltip.

    Se vuoi poi "standardizzare" il comportamento, per usare un termine improprio, potresti creare uno UserControl che incorpori questa funzionalità e replicarlo per ciascun elemento della griglia memorizzando al suo interno le informazioni che desideri, in modo che la pagina ne crei una copia per ciascun record e sia possibile, tramite lo script di cui sopra, ottenere la descrizione desiderata.

    Ovviamente, si tratta di una spiegazione del tutto teorica, al momento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    tutto si può fare, dipende da quello che si vuole. :master:
    Solo a titolo di esempio ti riporto un esempio del classico "regioni-province" fatto in tutte le salse, compreso ajax.
    Utilizzo c# e il GridView per allenamento mio personale, ma non ci dovrebbero essere differenza significative col DataGrid.


    codice:
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        private OleDbConnection con;
        
        protected void Page_Load(object sender, EventArgs e)
        {
            con = new OleDbConnection(MioModulo.StringaConnessioneTest);
            con.Open();
            if (!this.IsPostBack)
            {
                ModuloWeb.DataBind(this.GridView1, con, "SELECT * FROM REGIONI ORDER BY NOME_REGIONE", new string[] { "codice_istat_regione" });
            }
        }
    
        protected void Page_Unload(object sender, EventArgs e)
        {
            if (con != null) con.Close();
        }
    
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            System.Data.Common.DbDataRecord dbr = (System.Data.Common.DbDataRecord)e.Row.DataItem;
    
            if(e.Row.RowType == DataControlRowType.DataRow)
            {
                string codice_istat_regione = dbr["codice_istat_regione"].ToString();
                DataTable dt = ModuloWeb.GetDataTable(con, string.Format("select nome_provincia from q_provincie where codice_istat_regione = \"{0}\" ", codice_istat_regione));
                StringBuilder sb = new StringBuilder();
                sb.Append("<table>");
                sb.Append("<tr><td>Province</td></tr>");
                sb.Append("<tr><td>");
                sb.Append("<ul>");
                foreach (DataRow r in dt.Rows)
                {
                    sb.Append("[*]");
                    sb.Append(r[0].ToString());
                    sb.Append("");
                }
                sb.Append("[/list]");
                sb.Append("</td></tr></table>");
                e.Row.Attributes.Add("onmouseout", "GridView1_onmouseout(this);");
                e.Row.Attributes.Add("onmouseover", string.Format("GridView1_onmouseover(this, \"{0}\");", sb.ToString()));
            }
            
        }
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Pagina senza titolo</title>
        <link href="../../../../stili/Styles.css" rel="stylesheet" type="text/css" />
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    var GridView1_backgroundColor = null;
    function GridView1_onmouseout(v)
    {
        if(GridView1_backgroundColor)
            v.style.backgroundColor = GridView1_backgroundColor;
        document.getElementById("div1").innerHTML = "";
    }
    
    function GridView1_onmouseover(v, h)
    {
        GridView1_backgroundColor = v.style.backgroundColor;
        v.style.backgroundColor = "#FBCCC4";
        document.getElementById("div1").innerHTML = h;
    }
    
    
    // ]]>
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <table>
                <tr>
                    <td valign="top">
                        <asp:GridView ID="GridView1" runat="server" EnableViewState="false" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="GridView1_RowDataBound">
                            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                            <EditRowStyle BackColor="#999999" />
                            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        </asp:GridView>
                    
                    </td>
                    <td valign="top">
                        <div id="div1"></div>        
                    </td>
                </tr>
            </table>
        </form>
    </body>
    </html>
    Pietro

  4. #4
    vi ringrazio delle risposte.
    Per esigenze di tempo ho preferito creare un panel e al suo interno aggiungere a runtime le label che mi visualizzano le informazioni. Questo panel si visualizza/nasconde alla pressione di una colonna pulsante sulla griglia.

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    sul tema "effetti particolari" questo è interessante (e semplice)

    http://forum.html.it/forum/showthrea...15#post9760615
    Pietro

  6. #6
    Originariamente inviato da pietro09
    sul tema "effetti particolari" questo è interessante (e semplice)

    http://forum.html.it/forum/showthrea...15#post9760615
    sembra interessante come cosa. Grazie della dritta.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.