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

    LinkButton dentro datagrid

    Ragazzi, aiuto!
    Ho un linkbutton dentro un datagrid definito cosi':

    codice:
        <asp:DataGrid ID="dg" Runat=server >
    				<Columns>
    				<asp:TemplateColumn>
    					
    					<ItemTemplate>
    					<asp:LinkButton ID="lb" Text="Edit" runat=server />
    			
    					</ItemTemplate>
    					
    				</asp:TemplateColumn>
    				
    				</Columns>
    	</asp:datagrid>
    Il problema e' che nel codebehind, pur avendo istanziato e dichiarato l'oggetto, facendo una semplice operazione come:

    codice:
    public LinkButton lb;
    private void Page_Load(object sender, System.EventArgs e)
    		{
    		lb.Text="test button";//**riga in cui mi da errore
    		}
    Mi restituisce errore (System.NullReferenceException: Object reference not set to an instance of an object)...
    Se il Link Button lo metto invece fuori dal datagrid mi funziona.... ma allora come devo fare per istanziare il LinkButton dentro il DataGrid nel code behind???
    Grazie in anticipo a chi mi vorra' rispondere
    We live thinking we will never die.
    We die thinking we had never lived.

  2. #2

    Re: LinkButton dentro datagrid

    Originariamente inviato da dariosapi
    nel codebehind, pur avendo istanziato e dichiarato l'oggetto
    ho guardato velocemente, ma mi sembra che hai solo dichiarato l'oggetto senza istanziarlo
    Saluti a tutti
    Riccardo

  3. #3

    Re: LinkButton dentro datagrid

    Originariamente inviato da dariosapi
    Ragazzi, aiuto!
    Ho un linkbutton dentro un datagrid definito cosi':

    codice:
        <asp:DataGrid ID="dg" Runat=server >
    				<Columns>
    				<asp:TemplateColumn>
    					
    					<ItemTemplate>
    					<asp:LinkButton ID="lb" Text="Edit" runat=server />
    			
    					</ItemTemplate>
    					
    				</asp:TemplateColumn>
    				
    				</Columns>
    	</asp:datagrid>
    Il problema e' che nel codebehind, pur avendo istanziato e dichiarato l'oggetto, facendo una semplice operazione come:

    codice:
    public LinkButton lb;
    private void Page_Load(object sender, System.EventArgs e)
    		{
    		lb.Text="test button";//**riga in cui mi da errore
    		}
    Mi restituisce errore (System.NullReferenceException: Object reference not set to an instance of an object)...
    Se il Link Button lo metto invece fuori dal datagrid mi funziona.... ma allora come devo fare per istanziare il LinkButton dentro il DataGrid nel code behind???
    Grazie in anticipo a chi mi vorra' rispondere
    perche l'oggetto viene creato dinamicamente dalla tabella..
    prova ad usare l'evento del datagrid itemdatabound cosi':
    PS. io qui ho usato un Button ma il procedimento e' lo stesso..

    codice:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    		{	if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem || e.Item.ItemType==ListItemType.EditItem )
    				{Button Button1=(Button)(e.Item.Cells[5].FindControl("btnDelete"));
    								Button1.Attributes.Add("onClick", "javascript: return confirm('confermare la cancellazione?')");
    				
    		}

  4. #4
    se lo istanzio e faccio una cosa del genere:
    codice:
    protected LinkButton lb= new LinkButton();
    
    private void Page_Load(object sender, System.EventArgs e)
    		{lb.Visible = false;}
    non mi da errore ma chiaramente non funziona...
    Nell'esempio precedente il LinkButton lb e' istanziato nel client, infatti funziona "da solo" ma quando lo metto dentro il datagrid mi da problemi... non e' che si deve dichiarare in un altro modo?
    We live thinking we will never die.
    We die thinking we had never lived.

  5. #5
    Originariamente inviato da dariosapi
    se lo istanzio e faccio una cosa del genere:
    codice:
    protected LinkButton lb= new LinkButton();
    
    private void Page_Load(object sender, System.EventArgs e)
    		{lb.Visible = false;}
    non mi da errore ma chiaramente non funziona...
    Nell'esempio precedente il LinkButton lb e' istanziato nel client, infatti funziona "da solo" ma quando lo metto dentro il datagrid mi da problemi... non e' che si deve dichiarare in un altro modo?
    il datagrid deve creare dinamicamente per ogni riga un button,
    quindi tu non puoi accedere dall'esterno poiche' l'id che provi ad usare e' interno al datagrid devi accederci utilizzando un evento del datagrid
    attraverso e.Item
    in questo modo (qui sotto il button è il 6 elemento della griglia)
    codice:
    Button Button1=(Button)(e.Item.Cells[5].FindControl("btnDelete"));
    devi fare un cast esplicito per indicare che l'oggetto restituito e' un button e poi puoi accederci attraverso Button1..
    capito?

  6. #6
    se vuoi imparare ad usare bene il datagrid ti consiglio questo link(in inglese):
    http://aspnet.4guysfromrolla.com/articles/040502-1.aspx
    io ho cominciato la settimana scorsa a programmare in asp.net e mi sono trovato benissimo..
    spiega praticamente tutto

  7. #7
    hey kentaromiura!!
    Grazie mille, il tuo esempio funziona!!
    Non ho molta confidenza con il datagrid, ho sempre usato il datareader per visualizzare dati, cmq daro' un occhiata anche al link che hai postato.
    Grazie a tutti.
    We live thinking we will never die.
    We die thinking we had never lived.

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.