Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    intecettare un controllo in un repeater

    ciao, devo semplicemente cambiare la visibilità di due controlli aspanel che si trovano uno nell'itemtemplate e l'altro nell'alternatingitemtemplate..
    dove cavolo sbaglio:
    codice:
    private void TopProductRepeater_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
    { 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
    if(Session["user"]==null) 
    { 
    ((Panel)e.Item.FindControl("alternatePriceContents")).Visible=false; 
    ((Panel)e.Item.FindControl("itemPriceContents")).Visible=false; 
    } 
    else 
    { 
    ((Panel)e.Item.FindControl("alternatePriceContents")).Visible=true; 
    ((Panel)e.Item.FindControl("itemPriceContents")).Visible=true; 
    } 
    
    } 
    
    }

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    credo che devi fare prima un ctype all'oggetto desiderato.

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non so cosa dirti, a me sembra giusto. Ho provato questo codice preso più o meno dal tuo e mi funzionicchia
    codice:
    <%@ Page language="c#" %>
    <%@ import namespace="Libreria" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
    
    <html>
      <head>
        <title>WebForm16</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name=vs_defaultClientScript content="JavaScript">
        <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
      </head>
      <body MS_POSITIONING="FlowLayout">
    	
        <form id="Form1" method="post" runat="server">
    			
    
    
    				<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
    			
    
    </P>
    			<asp:Repeater id="Repeater1" runat="server" EnableViewState="False" OnItemCreated="Repeater1_ItemCreated">
    				<ItemTemplate>
    					<asp:Panel ID="alternatePriceContents" Runat="server">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["NOME_REGIONE"]%>
    						
    
    					</asp:Panel>
    				</ItemTemplate>
    				<AlternatingItemTemplate>
    					<asp:Panel ID="alternatePriceContents" Runat="server" BackColor="yellow">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["NOME_REGIONE"]%>
    						
    
    					</asp:Panel>
    				</AlternatingItemTemplate>
    			</asp:Repeater>
    
         </form>
      </body>
    </html>
    <script runat="server">
    private string StringaConnessione()
    {
    	return "Provider=Microsoft.Jet.OLEDB.4.0;Password='';User ID=Admin;Data Source=C:\\DATI\\test\\test.mdb;Mode=Share Deny None;Extended Properties='';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
    }
    
    void Page_Load()
    {
    	if(!this.IsPostBack)
    	{
    		ModuloWeb.DataBind(this.Repeater1, StringaConnessione(), "select * from regioni");
    	}
    }
    
    void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
    	switch(e.Item.ItemType)
    	{
    		case ListItemType.Item:
    		case ListItemType.AlternatingItem:
    		Panel Panel = (Panel) e.Item.FindControl("alternatePriceContents");
    		if(!(Panel == null)) Panel.BackColor = System.Drawing.Color.Khaki;
    		break;
    	}
    }
    
    </script>
    Pietro

  4. #4
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    no non è corretto il mio..
    tu usi correttamente l'if else io no.. anche se non ho capito perchè a questo punto non funziona || mah

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    mi dispiace ma non capisco. a me sembra corretto
    ho indentato, cosa c'è che non va?
    codice:
    private void TopProductRepeater_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
    { 
    	if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    	{ 
    		if(Session["user"]==null) 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=false; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=false; 
    		} 
    		else 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=true; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=true; 
    		} 
    
    	} 
    
    }
    Pietro

  6. #6
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da pietro09
    mi dispiace ma non capisco. a me sembra corretto
    ho indentato, cosa c'è che non va?
    codice:
    private void TopProductRepeater_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
    { 
    	if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    	{ 
    		if(Session["user"]==null) 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=false; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=false; 
    		} 
    		else 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=true; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=true; 
    		} 
    
    	} 
    
    }
    questo codice come l'ho scritto io e come adesso lo hai ripreso tu ritorna un "riferimento ad un oggetto non impostato su un'istanza di oggetto" non mi chiedere il perchè di questo errore perchè non lo sò

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Io con C# non sono pratico, però il problema che hai postato tu se ho ben capito, differisce da quello dell'amico Pietro per il fatto che lui ha messo il codice nel file.aspx, tu invece nel codebehind.
    Naturalmente hai messo nel repeater
    codice:
    OnItemCreated="TopProductRepeater_ItemCreated"
    Se l'hai messo e non funziona lo stesso, io proverei ad eliminare il contenuto della routine per vedere la parte che da errore.
    Se togli il contenuto che verifica la sessione, e funziona, sai per certo che l'errore è nella parte che assegna al panel contenuto nel repeater la property visible.
    Ciao
    Legnetto

  8. #8
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da Legnetto
    Io con C# non sono pratico, però il problema che hai postato tu se ho ben capito, differisce da quello dell'amico Pietro per il fatto che lui ha messo il codice nel file.aspx, tu invece nel codebehind.
    Naturalmente hai messo nel repeater
    codice:
    OnItemCreated="TopProductRepeater_ItemCreated"
    Se l'hai messo e non funziona lo stesso, io proverei ad eliminare il contenuto della routine per vedere la parte che da errore.
    Se togli il contenuto che verifica la sessione, e funziona, sai per certo che l'errore è nella parte che assegna al panel contenuto nel repeater la property visible.
    Ciao
    Legnetto
    si infatti.. ma cmq ho risolto, il problema è che non riesco a capire perchè non funziona se controllo se il tipo di item è item o alternatingitem nella stessa istruzione if.. perchè se controllo prima se è item e poi all'interno controllo anche se c'è l'alternatingitem allora funziona.. eppure il repeater credo sia apposto..
    <asp:repeater><item></item><alternatingitem></alternatingitem></asp:repeater>
    mah

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Io sono curioso e certe volte testardo

    Ho cambiato la mia paginetta di prova ed ho messo ESATTAMENTE il tuo codice. Ebbene, mi funziona :master:
    Perciò la domanda, ma sei proprio sicuro che quei panel di quel nome esistano per davvero?
    codice:
    <%@ Page language="c#" %>
    <%@ import namespace="Libreria" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
    
    <html>
      <head>
        <title>WebForm16</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name=vs_defaultClientScript content="JavaScript">
        <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
      </head>
      <body MS_POSITIONING="FlowLayout">
    	
        <form id="Form1" method="post" runat="server">
    			
    
    
    				<asp:Button id="Button1" runat="server" Text="Button" OnClick="Button1_onclick"></asp:Button></P>
    			
    
    </P>
    			<asp:Repeater id="Repeater1" runat="server" EnableViewState="False" OnItemCreated="Repeater1_ItemCreated">
    				<ItemTemplate>
    					<asp:Panel ID="alternatePriceContents" Runat="server">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["NOME_REGIONE"]%>
    						
    
    					</asp:Panel>
    					<asp:Panel ID="itemPriceContents" Runat="server">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["CODICE_ISTAT_REGIONE"]%>
    						
    
    					</asp:Panel>
    					
    				</ItemTemplate>
    				<AlternatingItemTemplate>
    					<asp:Panel ID="alternatePriceContents" Runat="server" BackColor="yellow">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["NOME_REGIONE"]%>
    						
    
    					</asp:Panel>
    					<asp:Panel ID="itemPriceContents" Runat="server">
    						<%#((System.Data.Common.DbDataRecord)Container.DataItem)["CODICE_ISTAT_REGIONE"]%>
    						
    
    					</asp:Panel>
    					
    				</AlternatingItemTemplate>
    			</asp:Repeater>
    
         </form>
      </body>
    </html>
    <script runat="server">
    private string StringaConnessione()
    {
    	return "Provider=Microsoft.Jet.OLEDB.4.0;Password='';User ID=Admin;Data Source=C:\\DATI\\test\\test.mdb;Mode=Share Deny None;Extended Properties='';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
    }
    
    void Page_Load()
    {
    	if(!this.IsPostBack)
    	{
    		ModuloWeb.DataBind(this.Repeater1, StringaConnessione(), "select * from regioni");
    	}
    }
    
    
    void Button1_onclick(object sender, System.EventArgs e)
    {
    	Session["user"] = "Pincus Pallinus";
    	ModuloWeb.DataBind(this.Repeater1, StringaConnessione(), "select * from regioni");
    }
    
    
    
    void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
    	/*
    	switch(e.Item.ItemType)
    	{
    		case ListItemType.Item:
    		case ListItemType.AlternatingItem:
    		Panel Panel = (Panel) e.Item.FindControl("alternatePriceContents");
    		if(!(Panel == null)) Panel.BackColor = System.Drawing.Color.Khaki;
    		break;
    	}
    	*/
    
    	if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    	{ 
    		if(Session["user"]==null) 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=false; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=false; 
    		} 
    		else 
    		{ 
    			((Panel)e.Item.FindControl("alternatePriceContents")).Visible=true; 
    			((Panel)e.Item.FindControl("itemPriceContents")).Visible=true; 
    		} 
    	} 	
    
    }
    
    </script>
    Pietro

  10. #10
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    non sò che dirti.. a me non funziona.. certo che sono sicuro
    quale framework usi?

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.