Foros del Web » Programando para Internet » ASPX (.net) »

Evento de un Control en Datalist?

Estas en el tema de Evento de un Control en Datalist? en el foro de ASPX (.net) en Foros del Web. Saludos Nuevamente . Pretendo (y voy en camino), que el Cliente tenga la Posibilidad de cambiar el Theme como lo habran visto en Sonico, Gmail, ...
  #1 (permalink)  
Antiguo 28/12/2009, 21:46
Avatar de jsrc1990  
Fecha de Ingreso: enero-2009
Mensajes: 95
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Evento de un Control en Datalist?

Saludos Nuevamente .

Pretendo (y voy en camino), que el Cliente tenga la Posibilidad de cambiar el Theme como lo habran visto en Sonico, Gmail, Hotmail..., Esto mediante un Datalist que contiene el Nombre del Theme y un Imagebutton.

Ya cargo el Nombre y la Imagen (Imagebutton), pero ahora como hago y en cual evento de que al Seleccionar una Imagen (Presionar un Imagebutton del Datalist) me reconosca cual es tomando asi, el imageurl que lo cargó o el Label que le pertenece, Mi codigo es:

<asp:DataList ID="DataList1" runat="server" Width="100%" RepeatColumns="5" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Diseño")%>'></asp:Label>
<br />
<asp:ImageButton ID="ImageButton1" runat="server" Width="68" Height="68" ImageUrl='<%# Eval("Imagen") %>' />
</ItemTemplate>
</asp:DataList>


y pues lo cargo por Datasource & Databind desde el Codebehind con un DataTable

Gracias ante todo.

Jsrc1990
  #2 (permalink)  
Antiguo 29/12/2009, 08:20
Avatar de okhosting  
Fecha de Ingreso: diciembre-2009
Ubicación: México
Mensajes: 66
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Evento de un Control en Datalist?

Puedes asignarle el evento a cada linkbutton como lo harias con un boton normal: onclick=CambiarTema

Y en el codebehind pones la funcion CambiarTema(object sender, EventArgs e), segun yo debe funcionar :) si no, en vez de un datalist usa un DropDwonList y maneja el evento de cuando se seleccione un item, y ponle autopostback = true

suerte!
  #3 (permalink)  
Antiguo 29/12/2009, 08:55
Avatar de jsrc1990  
Fecha de Ingreso: enero-2009
Mensajes: 95
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Respuesta: Evento de un Control en Datalist?

Saludos ,

Gracias Okhosting, ya lo habia resuelto hace una hora aprox. aqui va el codigo por si a alguien le sirve.

<asp:DataList ID="DataList1" runat="server" Width="100%" RepeatColumns="5" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Diseño")%>'></asp:Label>
<asp:ImageButton ID="ImageButton1" runat="server" Width="68" Height="68" CommandName="select" ImageUrl='<%# Eval("Imagen") %>' CommandArgument='<%#Eval("Diseño")%>' />
</ItemTemplate>
<SelectedItemStyle BorderColor="Green" BorderWidth="3" BorderStyle="Solid" />
</asp:DataList>


y una explicadita...

En el CommanName se le coloca select, para que pueda hacer los eventos del SelectedIndexChanged y pueda utilizar la etiqueta SelectedItemStyle, por lo que utilizo el CommandArgument para que cargue los Nombres de las Imagenes y asi en el Evento Protected Sub DataList1_ItemCommand(ByVal sour... del Datalist, referenciarlos con e.CommandArgument y asi saber cual es cual y hacer el update en la Bd de cual Theme es el Seleccionado,

No utilize el Evento Protected Sub DataList1_SelectedIndexChanged(ByVal send... ya que no le puedo sacar el CommandArgumment si no solo el el Index y de esta forma tendria que hacer el Update mediante el Consecutivo y no mediante el Nombre(Columna Diseño) como lo tengo planeado,

Aunque ahora me acaba de saltar la duda de si mejor actualizarlo por el Consecutivo (Mediante el Index) o por el Nombre (Columna Diseño) ya que pienso que por Entero seria mucho mas rapido. pero veo que hay un problema que al Eliminar un Registro de la Tabla, la Columna Consecutivo de tipo Integer Identity no se reinicia y esto podria ocasionar conflictos entre los indices del Datalist y los Indices de los Registros de las Tablas.

DBCC CHECKIDENT (Tabla, RESEED,0)

Intente con el comando pero no Reinicio...

Si me logro explicar?, alguna Solucion o Sugerencia?,

Jsrc1990.
  #4 (permalink)  
Antiguo 29/12/2009, 11:21
Avatar de okhosting  
Fecha de Ingreso: diciembre-2009
Ubicación: México
Mensajes: 66
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Evento de un Control en Datalist?

Orale que buena solucion Jsrc1990, en realidad asi como lo hiciste esta muy bien, no creo que halla una diferencia de velocidad si lo haces por el nombre o por el entero, ya que no es una tabla con muchos registros asi que si asi te funciona yo lo dejaría así.

Ademas efectivamente cuando tienes columnas autoincrementables generalmente no se reinician, y el proceso para reiniciarlo depende de cada motor de datos

Aun asi puedes manejar el id del diseño como CommandArgument y no se afectaria aun cuando elimines alguno, ya que tu tomarias el id como argumento y lo cargarias de forma normal
  #5 (permalink)  
Antiguo 29/12/2009, 14:00
Avatar de jsrc1990  
Fecha de Ingreso: enero-2009
Mensajes: 95
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Respuesta: Evento de un Control en Datalist?

Hola.

Gracias, pues bueno si, lo dejare asi como lo tengo y me afirmas ... ahora bien, cuando hago clic en la imagen del theme que quiero, hago el update en la Bd, en la Tabla Diseños, tengo una columna tipo bit, la cual solo puede haber un registro con 1 (true), el resto con 0 la cual indica cual es el seleccionado, el lo cambia, todo perfecto.

pero necesitaria hacer un Response.Redirect("Default.aspx"), para que haga nuevamente el Preinit para que pueda cargar el Nuevo tema porque los temas que yo sepa solo se pueden agregar "Dinamicamente" en el Preinit y como yo estoy implementando AJAX pues no quiero que haga el postback blanco feo ese, si no como lo hacen las paginas Mencionadas anteriormente,

Alguna idea o forma de cargar el theme sin hacer el Response.Redirect o hacer un Postback con ajax para que sea transparente?.

Gracias, Gracias nuevamente.

Jsrc1990
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 22:16.