Visualizzazione dei risultati da 1 a 6 su 6

Discussione: C# link datagrid...

  1. #1

    C# link datagrid...

    Salve ragazzi è un neofita che vi scrive...vorrei sapere come fare ad inserire un link ad un elemento di un datagrid; in pratica ho una lista estratta da un db e vorrei associare un link ad ogni elemento;nel link vorrei inserire l'id univoco ;da qui associare un evento dal quale recuperare l'id ed effettuare altre operazioni...(un pò come si faceva in classic asp).
    Ultima domanda:
    io nel datagrid ho caricato il campo titolo della tabella...ma volendo caricare una immagine (e linkarla) visto che nel db ho anche il campo immagine contenente il nome del file...come faccio?

    Scusate se mi sono dilungato....

    P.S.
    lavoro in Codebehind

    Grazie mille
    Aikon

    ...questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!

  2. #2
    Up :master:
    Aikon

    ...questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    imposta la proprieta' DataKeyField del tuo datagrid:

    codice:
    DataKeyField="nome_campo_id"

    ...e, allo scatenarsi di un evento generato da un controllo figlio del datagrid (che per il bubbling 'sale' fino al naso dello stesso), recupera l'ID nell'evento tuaGrid_ItemCommand così: (in VB)

    codice:
        Public Sub tuaGrid_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles tuaGrid.ItemCommand
            Select Case e.CommandName
                Case "uno"
                    TuaSub(tuaGrid.DataKeys(e.Item.ItemIndex))
                Case "due"
                    Tuasub(tuaGrid.DataKeys(e.Item.ItemIndex))
            End Select
        End Sub
    con e.CommandArgument invece ottieni il valore impostato nella proprieta' CommandArgument del controllo figlio, quindi uno qualsiasi della tua query...


    Il controllo figlio quindi, potrebbe essere questo (in una Templatecolumn - Itemtemplate)

    codice:
     
    <asp:LinkButton Text="uno" 
    CommandArgument='<%# Container.DataItem("nomecampo")%>' 
    CommandName="uno" Runat="server"></asp:LinkButton>
    
    <asp:LinkButton Text="due" 
    CommandArgument='<%# Container.DataItem("nomecampo")%>' 
    CommandName="due" Runat="server"></asp:LinkButton>

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    per l'immagine invece puoi usare (sempre nella templatecolumn) un:

    codice:
    <asp:ImageButton runat="server" ImageUrl='<# Container.DataItem ("CampoColNomeDelFile") %>' CommandName="img"></asp:ImageButton>
    CommandName ti serve sempre nell' _ItemCommand se vuoi fare qualcosa al click sull'immagine...

    spero di esserti stato utile

  5. #5
    Originariamente inviato da djciko
    imposta la proprieta' DataKeyField del tuo datagrid:

    codice:
    DataKeyField="nome_campo_id"

    ...e, allo scatenarsi di un evento generato da un controllo figlio del datagrid (che per il bubbling 'sale' fino al naso dello stesso), recupera l'ID nell'evento tuaGrid_ItemCommand così: (in VB)

    codice:
        Public Sub tuaGrid_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles tuaGrid.ItemCommand
            Select Case e.CommandName
                Case "uno"
                    TuaSub(tuaGrid.DataKeys(e.Item.ItemIndex))
                Case "due"
                    Tuasub(tuaGrid.DataKeys(e.Item.ItemIndex))
            End Select
        End Sub
    con e.CommandArgument invece ottieni il valore impostato nella proprieta' CommandArgument del controllo figlio, quindi uno qualsiasi della tua query...


    Il controllo figlio quindi, potrebbe essere questo (in una Templatecolumn - Itemtemplate)

    codice:
     
    <asp:LinkButton Text="uno" 
    CommandArgument='<%# Container.DataItem("nomecampo")%>' 
    CommandName="uno" Runat="server"></asp:LinkButton>
    
    <asp:LinkButton Text="due" 
    CommandArgument='<%# Container.DataItem("nomecampo")%>' 
    CommandName="due" Runat="server"></asp:LinkButton>

    Innanzitutto grazie per le risposte...
    non ho capito bene il discorso del controllo figlio del datagrid.

    Dove andrebbe posizionato?

    Questo è il body della mia pagina aspx

    codice:
    <body MS_POSITIONING="GridLayout">
    		<form id="Form1" method="post" runat="server">
    			<asp:datagrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 40px"
    				runat="server" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" BackColor="White"
    				CellPadding="3" GridLines="Vertical">
    				<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
    				<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
    				<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
    				<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
    				<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
    				<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
    			</asp:datagrid><asp:textbox id="txtTitolo" style="Z-INDEX: 102; LEFT: 456px; POSITION: absolute; TOP: 48px"
    				runat="server" Width="200px"></asp:textbox>
    			<asp:Label id="lblTitolo" style="Z-INDEX: 103; LEFT: 456px; POSITION: absolute; TOP: 168px"
    				runat="server" Width="248px"></asp:Label>
    			<asp:TextBox id="txtGenere" style="Z-INDEX: 104; LEFT: 456px; POSITION: absolute; TOP: 80px"
    				runat="server" Width="200px"></asp:TextBox>
    		</form>
    	</body>
    Aikon

    ...questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    devi produrre le colonne manualmente, mi sa..
    E poi aggiungere questa: (prima di </asp: datagrid>)

    codice:
    <columns>
    .
    .
    .
    .
    <templatecolumn>
     <itemtemplate>
      <asp:LinkButton Text="uno" 
        CommandArgument='<%# Container.DataItem("nomecampo")%>' 
        CommandName="uno" Runat="server"></asp:LinkButton>
    
       <asp:LinkButton Text="due" 
        CommandArgument='<%# Container.DataItem("nomecampo")%>' 
        CommandName="due" Runat="server"></asp:LinkButton> 
     </itemtemplate>
    </templatecolumn>
    </columns>
    non dimenticando di impostare:
    codice:
    <asp:datagrid DataKeyField="id" AutoGenerateColumns="false"..
    ma credo che dovresti studiacchiarti un po' il datagrid in generale...E' il controllo più complesso della vers. 1.1

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.