Foros del Web » Programación para mayores de 30 ;) » .NET »

Llamar a método de otra clase...

Estas en el tema de Llamar a método de otra clase... en el foro de .NET en Foros del Web. Hola a tod@s: Tengo una página [adm_inspeli.aspx] en la que incluyo un control de usuario web [adm_info.ascx]. En [adm_inspeli.aspx] está el típico formulario para realizar ...
  #1 (permalink)  
Antiguo 28/02/2007, 13:51
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Llamar a método de otra clase...

Hola a tod@s:

Tengo una página [adm_inspeli.aspx] en la que incluyo un control de usuario web [adm_info.ascx].

En [adm_inspeli.aspx] está el típico formulario para realizar un inserto, en este caso de una pelicula.
En la parte derecha de la pantalla, dentro de un div muestro el contenido de [adm_info.ascx]. Lo que hace este es indicar el número de registros en las tablas indicadas. Por ejemplo que en ese momentos hay tantas peliculas registradas,...

La cosa es que se accede a [adm_inspeli.aspx] para registrar una nueva película. En ese momento, a través del [adm_info.ascx] se observa que hay por ejemplo 11 películas en total.

Lo que quiero es que al pulsar el botón de [Insertar] del formulario de [adm_inspeli.aspx], se actualice la cuenta realizada dentro del [adm_info.ascx] y se muestre el nuevo total actual, en este caso 12 películas.

Estos son los códigos de los .cs de cada uno de los archivos:

[adm_inspeli.aspx.cs]
Código:
//...

namespace webvideoclub
{
	/// <summary>
	/// Descripción breve de adm_inspeli.
	/// </summary>
	public class adm_inspeli : System.Web.UI.Page
	{
		//...

		//CONEXIÓN A LA BASE DE DATOS db_videoclub
		protected SqlConnection conexion = new SqlConnection("server=EL_SERVIDOR;database=db_BASEDATOS;uid=sa");

		//...

		/* [ BOTÓN PARA INSERTAR PELÍCULA ] */
		// ==========================================
		private void btn_insPelicula_ServerClick(object sender, System.EventArgs e)
		{
			//...

			// SE EFECTÚA EL INSERTO EN LA TABLA PELICULAS
			string sql_InsPeli = "INSERT INTO PELICULAS (peli_id, peli_tit, ...) VALUES ('"+ vpeli_id +"', '"+ vpeli_tit +"', ...)";
			SqlCommand coman_IsnPeli = new SqlCommand(sql_InsPeli, conexion);

			try
			{
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				//...
			}
			catch(SqlException laexIsnPeli)
			{
				vinfo_insPeli += "Se ha producido un error al INSERTAR la pel&iacute;cula y el alta se ha cancelado:<br/>" + laexIsnPeli.Message;
			}
		}//fin de insertar peli

		//...

	}
}

[adm_info.ascx.cs]
Código:
namespace webvideoclub
{
	using System;
	using System.Data;
	using System.Data.SqlClient;//NECESARIO PARA CONEXIÓN Y ÓRDENES DE SQL
	using System.Drawing;
	using System.Web;
	using System.Web.UI.WebControls;
	using System.Web.UI.HtmlControls;

	/// <summary>
	///		Descripción breve de adm_info.
	/// </summary>
	public abstract class adm_info : System.Web.UI.UserControl
	{
		protected int vtot_pelis, ... ;
		//CONEXIÓN A LA BASE DE DATOS db_videoclub
		protected SqlConnection conex_info = new SqlConnection("server=EL_SERVIDOR;database=db_BASEDATOS;uid=sa");

		private void Page_Load(object sender, System.EventArgs e)
		{
			cargarInfo();
		}

		public void cargarInfo()
		{
			// TOTAL DE PELICULAS
			string sql_TotPelis = "SELECT COUNT(peli_id) FROM PELICULAS";
			SqlCommand coman_TotPelis = new SqlCommand(sql_TotPelis, conex_info);

			try
			{
				conex_info.Open();

				// TOTAL DE PELICULAS
				vtot_pelis = int.Parse((coman_TotPelis.ExecuteScalar()).ToString());

				conex_info.Close();
			}
			catch(SqlException ex_infoBD)
			{
				Response.Write("Se ha producido un error: " + ex_infoBD);
			}
		}//fin de cargarInfo()
	}
}

//...

¿Como llamar a cargarInfo() que está en adm_info.ascx.cs tras insertar la peli?

Desde mi nivel de principiante en este tipo de código se me había ocurrido a poner directamente así, tras ejecutar el Insert:

Código:
			try
			{
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				cargarInfo();
				//...
			}
			catch(SqlException laexIsnPeli)
			{
				vinfo_insPeli += "Se ha producido un error al INSERTAR la pel&iacute;cula y el alta se ha cancelado:<br/>" + laexIsnPeli.Message;
			}
Luego deduciendo que pertenece ó que está dentro de otra clase, la adm_info, me ha dado por poner así, aunque también da error:

Código:
			try
			{
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				adm_info.cargarInfo();
				//...
			}
			catch(SqlException laexIsnPeli)
			{
				vinfo_insPeli += "Se ha producido un error al INSERTAR la pel&iacute;cula y el alta se ha cancelado:<br/>" + laexIsnPeli.Message;
			}

¿Entonces cómo se hace esto? ¿Hay que cambiar por ejemplo de primeras las definiciones de los métodos y las variables y ponerlas a public?
¿Que otra cosa hay que hacer para que esto funcione...?

Gracias.
__________________
Saludos,

zacktagnan.
=================================================
  #2 (permalink)  
Antiguo 01/03/2007, 10:51
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Por lo visto, nadie. al menos de los que han entrado al tema, sabe una posible solución a todo esto...

Al final si no es acceder ó llamar a ese método de ese control de usuario Web desde otro archivo .cs, aunque sea llamar a su PageLoad para que se actualice después de realizar el nuevo inserto y muestre el total exacto.
__________________
Saludos,

zacktagnan.
=================================================
  #3 (permalink)  
Antiguo 16/03/2007, 03:49
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Bueno, después de haber pasado tanto tiempo, me tendré que olvidar de esperar una respuesta para este tema.

Si es una cosa imopsible de realizar también me gustaría que me lo dijeran.

Pues eso,...
__________________
Saludos,

zacktagnan.
=================================================
  #4 (permalink)  
Antiguo 16/03/2007, 08:07
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

Hola,

Tu debilidad esta en los conceptos de la programación orientada a objetos.

Tienes que diferenciar entre una clase y objeto ya que no son lo mismo, también tienes que saber que es una instancia de una clase.

Mientras prueba haciendo lo siguiente:
Código:
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				this.cargarInfo(); //adm_info.cargarInfo();
Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #5 (permalink)  
Antiguo 16/03/2007, 10:21
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Cita:
Mientras prueba haciendo lo siguiente:
Código:
conexion.Open();
coman_IsnPeli.ExecuteNonQuery();
conexion.Close();
this.cargarInfo(); //adm_info.cargarInfo();
¡¡Buen intento!! Pero desde mi pequeñísima experiencia en este lenguaje, el this apunta a todo lo que hay dentro del propio archivo dónde se aplica ¿no?
Es decir, de ponerlo dónde dices, osea en el archivo adm_inspeli.aspx.cs], se pretende llamar al método cargarInfo() que estaría dentro de él.

Pero si te fijas en la explicación, el cargarInfo() está en otro archivo diferente, el llamado [adm_info.ascx.cs].

Luego, ésta no es la solución

Por probar, yo también había intentado con esto

//SIENDO webvideoclub EL NOMBRE DEL PROYECTO
webvideoclub.adm_info.cargarInfo

Pero al dar al punto después de elegir adm_info, en la lista propuesta no sale cargarInfo.

Pues nada, la cosa sigue sin solucionarse...
__________________
Saludos,

zacktagnan.
=================================================
  #6 (permalink)  
Antiguo 16/03/2007, 10:32
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

Te recomiendo estudies un poco más los conceptos de OO.

No puedes llamar a un método de un objeto cuando el objeto no esta instanciado, ahora si quieres llamar al método sin necesidad de instanciar un objeto tendrías que declarar static al metodo, pero todo depende de tu necesidades y diseño

Mientras te sugiero hacer lo siguiente:

1 - instanciar objeto
2 - luego llamar al metodo:

ejemplo:

Código:
conexion.Open();
coman_IsnPeli.ExecuteNonQuery();
conexion.Close();
//this.cargarInfo(); //adm_info.cargarInfo();
adm_info tuObjeto = new adm_info();
tuObjeto.cargarInfo();


Saludes

PD: repasa la teoría del this.
__________________
Leer es Saber, REEL.
Mi Blog
  #7 (permalink)  
Antiguo 16/03/2007, 12:01
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Vale...

He hecho lo que dices:
Código:
adm_info tuObjeto = new adm_info();
tuObjeto.cargarInfo();
Y al ejecutar me ha dado el error:
Código:
No se puede crear una instancia de la clase o interfaz abstracta 'webvideoclub.adm_info'
Entonces, he quitado el tipo abstract de dicha clase:
Código:
//ANTES
public abstract class adm_info : System.Web.UI.UserControl
{
	...

//AHORA
public class adm_info : System.Web.UI.UserControl
{
	...
	private void Page_Load(object sender, System.EventArgs e)
	{
		cargarInfo();
	}

	public void cargarInfo()
	{
		//RECARGA DE LOS DATOS DE [adm_info.ascx]
	}
Entonces, ya no da error alguno.

Pero la cosa no se soluciona como es deseado pues al realizar un nuevo inserto, sigue sin actualizar la info contenida en [adm_info.ascx].
Vamos que como si no se hiciera nada ó la llamada no fuera efectiva...

Seguimos igual. Aunque puede que más cerca de la solución final. No sé...
__________________
Saludos,

zacktagnan.
=================================================
  #8 (permalink)  
Antiguo 16/03/2007, 13:06
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

Entonces hay que cambiar todo, en la página adm_inspeli.aspx has insertado el control de usuario adm_info entonces quiere decir que existe hay un nombre para ese control, lo que tienes que hacer es llamar al método de ese control que ya existe en tu página que si no le has cambiado el nombre tiene que llamar se adm_info1

Código:
//nombre del control ascx.cargarInfo();
//tomando el nombre de arribla seria
adm_info1.cargarInfo();
Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #9 (permalink)  
Antiguo 16/03/2007, 13:40
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Bueno, lo último que me dices, no lo he cogido del todo.

Vamos a ver. Yo, cuando saqué el control de usuario [adm_info.ascx] en el [adm_inspeli.aspx] dentro de una etiqueta <div>...</div>, se creó en al principio del código HTML de [adm_inspeli.aspx] la línea en negrita:
Código:
<%@ Page language="c#" Codebehind="adm_inspeli.aspx.cs" AutoEventWireup="false" Inherits="webvideoclub.adm_inspeli" %>
<%@ Register TagPrefix="uc1" TagName="adm_menu" Src="adm_menu.ascx" %>
<%@ Register TagPrefix="uc1" TagName="adm_info" Src="adm_info.ascx" %>
 
Y dentro de la mencionada <div>...</div>:
Código:
<div style="LEFT:685px;TOP:135px;POSITION:absolute">
	<uc1:adm_info id="Adm_info1" runat="server"></uc1:adm_info>
</div>
Cita:
Entonces hay que cambiar todo, en la página adm_inspeli.aspx has insertado el control de usuario adm_info entonces quiere decir que existe hay un nombre para ese control, lo que tienes que hacer es llamar al método de ese control que ya existe en tu página que si no le has cambiado el nombre tiene que llamar se adm_info1
Supongo que te refieres al id dentro del <uc1:...></uc1:...>, es decir, en mi caso, exactamente, Adm_info1

Ahora, ¿dónde pongo lo de "Adm_info1.cargarInfo();"?

Lo he probado en la parte código del adm_inspeli.aspx, es decir, en el [adm_inspeli.aspx.cs], pero no hay ninguna referencia a ello.
Osea, que diciéndolo simple y llánamente, al poner Adm_info1 y punto no sale nada. Y tampoco sale (esto, igual, es otra burrada) poniendo:
Código:
Adm_info1 tuObjeto = new Adm_info1(); 
Resumiendo, que la última sugerencia no te he entendido como aplicar, si me lo explicas mejor...

Gracias...
__________________
Saludos,

zacktagnan.
=================================================
  #10 (permalink)  
Antiguo 16/03/2007, 14:17
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

pero ya vamos por buen camamino.

Código:
<uc1:adm_info id="Adm_info1" runat="server"></uc1:adm_info> 
Correcto en tu caso el control se llama Adm_info1.


Me parece raro que no te aparezca lo metodos luego de digitar el ".", pero bueno prueba poniendo "this." luego del punto te tiene que aparecer todos los controles que posee la página, si te aparece "Adm_info1" escribes el nombre del metodo y ejecuta la página.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #11 (permalink)  
Antiguo 16/03/2007, 14:41
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

En lo poco que llevo en este lenguaje ASP .NET en C#, siempre programando a través del Visual Studio, me he llegado a percatar que cuando en la Vista Diseño sacas un control de tipo Web Forms (un TextBox, ListBox, RadioButton, Button, etc, ...), se crea en la parte de código interno (es decir en el .cs) una declaración del control sacado.
Por ejemplo, si se ha definido un TextBox con el id llamado caja_Texto, al principio del código, se crea la línea:
Código:
protected System.Web.UI.WebControls.TextBox caja_Texto;
Pero yo cuando cree, a través del menú Proyecto >> Agregar control de usuario Web (es decir, el [adm_info.ascx]) y, después de configurar su contenido, lo inserté dentro de [adm_inspeli.aspx] arrastrándolo desde el Explorador de soluciones a la Vista Diseño de [adm_inspeli.aspx] en la parte de código .cs no se creó nada.

Todo esto para decir que en el .cs no existe (creo yo) una referencia para Adm_info1.

Luego con el "this." sigue sin salir el Adm_info1.

Menciono, de nuevo, que cuando pongo "this.", sale una lista de todos los métodos, variables y otras cosas contenidas en el archivo ó a aplicar ahí pero el Adm_info1 no.

¿Algo más?
__________________
Saludos,

zacktagnan.
=================================================
  #12 (permalink)  
Antiguo 16/03/2007, 15:11
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

Intenta quitar el control y volver lo a poner.
__________________
Leer es Saber, REEL.
Mi Blog
  #13 (permalink)  
Antiguo 16/03/2007, 15:58
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Ya lo he hecho y nada de nada. Que el control de usuario no sale en la lista, solo variables, controles Web Form y controles Html.

...
__________________
Saludos,

zacktagnan.
=================================================
  #14 (permalink)  
Antiguo 16/03/2007, 16:50
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Re: Llamar a método de otra clase...

Ya no se me ocurre como ayudarte ... porque hasta donde tengo entendido deberías de poder acceder al control desde código.



Saludes
__________________
Leer es Saber, REEL.
Mi Blog
  #15 (permalink)  
Antiguo 16/03/2007, 17:46
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Pues nada que se le va a hacer...

Si se te ocurre otra cosa, ya me dirás...

Por ahora, para conseguir lo que quería, es decir, que se actualizara la información de cuenta de registros tras el inserto del nuevo elemento, lo que he hecho es un Redirect de ida y vuelta así el listado termina estando y mostrándose actualizado. No es la solución más "profesional", tampoco es muy cutre pero si práctica. Y consigo lo que quería.

De todas maneras, no sé, supongo que habrá alguna manera de acceder tal y como pretendíamos pero no hemos conseguido dar con ella...

A lo dicho, si se te ocurriera otra cosa...

Sino, gracias por tus sugerencias y tu ayuda...
__________________
Saludos,

zacktagnan.
=================================================
  #16 (permalink)  
Antiguo 16/03/2007, 18:01
Avatar de Alex Reyes  
Fecha de Ingreso: diciembre-2005
Ubicación: Camarillo, CA
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Llamar a método de otra clase...

La solucion this.UserControl1.MetodoQueQuieresLlamar(); si funciona.

Cuando agregas un Web User COntrol, se crea una variable en la clase de la pagina principal, entonces, cuado usas el "this", esta variable es accesible.

El Metodo que deseas llamar tiene que ser public, si no no lo vas a poder ver desde la clase principal.

Si quieres te mando el ejemplo que hice, solo mandame un e-mail.
__________________
Alex Reyes
http://jalexreyes.spaces.live.com
  #17 (permalink)  
Antiguo 17/03/2007, 03:35
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

A ver Alex...

Cita:
Cuando agregas un Web User COntrol, se crea una variable en la clase de la pagina principal, entonces, cuado usas el "this", esta variable es accesible.

El Metodo que deseas llamar tiene que ser public, si no no lo vas a poder ver desde la clase principal.
Supongo que cuando dices "en la clase de la página principal", la página principal es dónde se ha insertado el control de usuario Web, en mi caso [adm_inspeli.aspx], ¿no?

Sea como fuere...
Primero, como ya he puesto en anteriores contestaciones a reel:
- ni se me crea una variable en la parte de código al inserta el control de usuario Web
- y por tanto, no me aparece el id del control de usuario Web creado (en mi caso, Adm_info1), al teclear "this."
Luego, no me sirve que teclee "this.Adm_info1.cargarInfo();" porque me dará error al no encontrar ni Adm_info1 ni cargarInfo().

A lo mejor todo esto de que aparezca ó no es cuestión de versiones del Visual Studio. Es decir, que el que aparezca es posible en la versión 2005.
Y en la mía, que es la anterior, no es posible...

De todas formas, si dices que tienes un ejemplo hecho que funciona y me lo quieres pasar, te he enviado un mensaje privado por el foro con mi email...

Pero insisto que a mi no se me crea una variable al insertar el control de usuario Web...

Esto se va a quedar en un extraño dilema sin resolver...
__________________
Saludos,

zacktagnan.
=================================================
  #18 (permalink)  
Antiguo 21/03/2007, 14:12
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

A ver Alex Reyes...

¿Seguro que el código que me has pasado no está hecho con la última versión 2005 del Visual Studio?

Por ejemplo, con sólo fijarme en el tipo de etiquetas del HTML ya es un formato diferente.

Pero sobre todo en la parte .cs de los archivos tanto del Default.aspx como del WebUserControl.ascx usas la librería .WebParts con la línea:

Código:
using System.Web.UI.WebControls.WebParts;
En mi versión del Visual Studio, no me sale esto al pulsar "." tras el WebControls.

También lo siguiente me da un aviso de error:

Código:
public partial class ...
Y por último como ya he dicho en otras respuestas me sigue sin salir todo lo siguiente tras teclear el "this":

this.WebUserControl1.changeLabel("Changed From Main Form");

Si no me sale el primero, no me puede salir el método...

Pues eso,...

Me gustaría me confirmaras si es así, si tu versión es la 2005 y por eso a mi no me sale todas estas opciones que me habéis comentado.
__________________
Saludos,

zacktagnan.
=================================================
  #19 (permalink)  
Antiguo 21/03/2007, 16:22
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Llamar a método de otra clase...

Cita:
Iniciado por zacktagnan Ver Mensaje
¿Seguro que el código que me has pasado no está hecho con la última versión 2005 del Visual Studio?.
No tiene nada que ver el IDE aquí... pero el código que te pasaron funciona a partir de asp.net 2 (no asp.net 1.x, que creo es el que estás usando).

Por otro lado, no sé porque te complicas tanto la vida, porque IMHO, el control ese NO debería ser el encargado de cargar los datos...; haz caso a lo que te dicen en el cuarto comentario

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #20 (permalink)  
Antiguo 21/03/2007, 16:44
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

Cita:
No tiene nada que ver el IDE aquí... pero el código que te pasaron funciona a partir de asp.net 2 (no asp.net 1.x, que creo es el que estás usando).
¿¿Y como puedo saber que tipo de ASP.NET estoy usando??

Y si estoy ejecutando el ASP.NET 1.x, ¿cuál es la forma de pasar al ASP.NET 2?

--------------------------------------------

Cita:
Por otro lado, no sé porque te complicas tanto la vida, porque IMHO, el control ese NO debería ser el encargado de cargar los datos...
¿...? ¿Por qué no...? ¿Qué IMHO?

Cita:
... haz caso a lo que te dicen en el cuarto comentario ...
¿Te refieres a esto?
Código:
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				this.cargarInfo(); //adm_info.cargarInfo();
Si es así, y te fijas en el QUINTO comentario, la respuesta al respecto, verás que ya lo he probado y no puedo aplicarlo...
__________________
Saludos,

zacktagnan.
=================================================
  #21 (permalink)  
Antiguo 21/03/2007, 17:49
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Llamar a método de otra clase...

Cita:
Iniciado por zacktagnan Ver Mensaje
¿¿Y como puedo saber que tipo de ASP.NET estoy usando??

Y si estoy ejecutando el ASP.NET 1.x, ¿cuál es la forma de pasar al ASP.NET 2?
Hmm, me sorprende bastante que hagas esa pregunta, pero si estás usando Visual Studio 2003, lo más probable es que sea asp.net 1.1 (o puedes verlo en el directorio virtual que tienes asignado para tu aplicación o viendo las cabeceras que te devuelve tu servidor web, etc, etc)

Antes de intentar hacer algo, me parece que debes documentarte bien en temas relacionados a programación orientada a objetos, luego talvez te interese leer sobre arquitectura de aplicaciones "n capas" o MVC.
Cita:
¿...? ¿Por qué no...? ¿Qué IMHO?
Pues como dije, IMHO, un control es un elemento de presentación y no debe tener más responsabilidades que mostrar los datos... si deseas una explicación más exacta y detallada -y la respuesta a la segunda pregunta- haz uso de tu buscador preferido.

Cita:
¿Te refieres a esto?
Código:
				conexion.Open();
				coman_IsnPeli.ExecuteNonQuery();
				conexion.Close();

				this.cargarInfo(); //adm_info.cargarInfo();
Si es así, y te fijas en el QUINTO comentario, la respuesta al respecto, verás que ya lo he probado y no puedo aplicarlo...
No, me refería a (aunque inicialmente creí que te mandó a leer algo sobre eso):
Cita:
Tu debilidad esta en los conceptos de la programación orientada a objetos.
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #22 (permalink)  
Antiguo 22/03/2007, 17:00
Avatar de Alex Reyes  
Fecha de Ingreso: diciembre-2005
Ubicación: Camarillo, CA
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: Llamar a método de otra clase...

El ejemplo que te pase es en ASP.Net 2.0.

IMHO es una abreviacion de internet para decir "En mi humilde opinion" pero en ingles "In My Humble Opinion".

La solucion para AP.Net 1.1

Crea una variable del tipo tuUserControl y utiliza el metodo findcontrol de la clase principal pasando como argumento el Identificador de tu control.

WebUserControl1 wuc = (WebUserControl1)this.FindControl("WebUserControl11");

Una vez que haces esto, todas las propiedades y metodos publicos van a aparecer y poder ser usados con esta nueva variable.

Como te daras cuenta, wuc es una variable nueva, pero en vez de crear un nuevo objeto, le asignamos la referencia al WebUserControl11 entonces, wuc y WebUserControl11 es practicamente lo mismo.

Espero que esto te sirva.

P.S. Y dando mas lata, si debes de familiarizarte mas con la Programacion Orientada a Objetos.

__________________
Alex Reyes
http://jalexreyes.spaces.live.com
  #23 (permalink)  
Antiguo 23/03/2007, 09:57
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Re: Llamar a método de otra clase...

¡¡Eurekaaa!! Como diría alguno...

Por fin lo que me has pasado produce el efecto deseado Alex.

Con los nombres adecuados, por seguir lo expuesto en las partes de código de las respuestas anteriores, así quedaría la llamada al método de la clase contenida dentro del control de usuario Web desde otro método de otra clase (en ASP.NET 1.1), siendo [adm_info] el nombre del archivo del control de usuario Web y el de la clase principal y [Adm_info1] el id que posee el control de usuario Web en dónde ha sido insertado:

Código:
			adm_info wuc = (adm_info)this.FindControl("Adm_info1");
			wuc.cargarInfo();
Pues vale... Ya se me actualiza el listado tal y como quería.

Gracias Alex por darme la respuesta correcta y a todos los demás igualmente por toda vuestra larga colaboración.

Hasta la próxima.
__________________
Saludos,

zacktagnan.
=================================================
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:13.