Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 01-mar-2004, 11:04   #1 (permalink)
keither está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
confirm() JS en datalist

Hola!,

Necesito mostrar una ventana de confirmación cuando el usuario haga clic en el boton que lanza el DeleteCommand de un DAtaList. Para ello, en el EditCommand intendo hacer lo siguiente:

botonBorrar=(LinkButton)e.Item.FindControl("miBoto nBorrar");

y luego:

botonBorrar.Attributes.Add("onclick","return confirm('Está seguro?');");

Pero me dice que botonBorrar no esta definido como uns instancia de objeto:

System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto

En el datalist está definido así:

<asp:linkbutton class=botoForm id=miBotonBorrar Runat="server" Text="Eliminar" CommandName="delete"></asp:LinkButton>

Alguna idea? Gracias.
keither está desconectado   Responder Citando
Antiguo 01-mar-2004, 14:38   #2 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Hola.. lo que pasa es que dentro de tu datalist tienes varios items y tienes que asociarle a c/u de ello su evento..

Ejemplo.

Cita:
For i = 0 To myList.Items.Count - 1
CType(myList.Items(i).FindControl("miBotonBorrar") , LinkButton).Attributes.Add("onClick", "return confirm('Está seguro?');")
Next
Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .
RootK está desconectado   Responder Citando
Antiguo 02-mar-2004, 02:28   #3 (permalink)
keither está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Esto en C# no seria:

for(int i=0;i<DLSeccionsDades.Items.Count;i++){
((LinkButton)DLSeccionsDades.Items[i].FindControl("miBotonBorrar")).Attributes.Add("onC lick","return confirm('Está seguro ?');");
}

Porque lo pongo en la funcion que lanza el EditItemCommand y me sale el mismo error:

System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.

Que más puedo estar haciendo mal? Agradeceria una respuesta.
keither está desconectado   Responder Citando
Antiguo 02-mar-2004, 08:17   #4 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Cita:
Porque lo pongo en la funcion que lanza el EditItemCommand
Ese código no lo pongas en editcommand....ponlo cuando estes llenando tu datalist para que posteriormente le asignes el evento "onClick" a cada uno de los items.

ejemplo.

Cita:
void BindDataList()
{
DataList1.DataSource = DS;
DataList1.DataBind();
..
...
for(int i=0;i<DLSeccionsDades.Items.Count;i++)
{
((LinkButton)DLSeccionsDades.Items[i].FindControl("miBotonBorrar")).Attributes.Add("onC lick","return confirm('Está seguro ?');");
}

}
Saludos
RootK está desconectado   Responder Citando
Antiguo 02-mar-2004, 08:50   #5 (permalink)
keither está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Nada, sigue el mismo error. Rootk he puesto el código cuando lleno el DataList, justo después del databind() tal y como me ponias en tu mensaje. Me estoy comenzando a desesperar... Se os ocurre algo más que pueda estar fallando?

Gracias.
keither está desconectado   Responder Citando
Antiguo 02-mar-2004, 09:16   #6 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Me parece extraño porque yo ya hice algunas pruebas y me funciona sin problemas... creo que sería mas facil que pongas el código que tienes en tu datalist porque al parecer por el tipo de errro que te marca estas haciendo referencia a un objeto que en ese momento no existe y eso me llama la atencion.
RootK está desconectado   Responder Citando
Antiguo 02-mar-2004, 09:52   #7 (permalink)
keither está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Aqui esta el código del datalist:

<asp:datalist id="DLSeccionsDades" runat="server" OnItemCommand="DLSeccionsDades_ItemCommand" OnEditCommand="DLSeccionsDades_EditCommand" DataKeyField="ISECCIO" OnUpdateCommand="DLSeccionsDades_UpdateCommand" OnDeleteCommand="DLSeccionsDades_DeleteCommand">
...

<EditItemTemplate>
...
<asp:linkbutton class="botoForm" id="esborrarDadaSeccio" Runat="server" Text="Eliminar Dada" CommandName="delete"></asp:linkbutton>
<asp:linkbutton class="botoForm" id="Linkbutton7" Runat="server" Text="Desar Canvis" CommandName="update"></asp:linkbutton>
...
</EditItemTemplate>
...
</asp:datalist>

El codebehind:

private void Page_Load(object sender, System.EventArgs e)
{
// Introducir aquí el código de usuario para inicializar la página
if(!IsPostBack)
{
carregaDadesSeccio();
}

void carregaDadesSeccio()
{
SqlCommand sqldades = new SqlCommand("SELECT * FROM SECCIOINFO WHERE SECCIO="+Request.QueryString["id"]+" ORDER BY POSICIO",sqlConnection1);
if(sqlConnection1.State.ToString()=="Closed")
{
sqlConnection1.Open();
}
SqlDataReader dadesReader=sqldades.ExecuteReader();
DLSeccionsDades.DataSource=dadesReader;
DLSeccionsDades.DataBind();

//apliquem el confirm al boto d'esborrar
for(int i=0;i<DLSeccionsDades.Items.Count;i++)
{
((LinkButton)DLSeccionsDades.Items[i].FindControl("esborrarDadaSeccio")).Attributes.Add ("onClick","return confirm('Está seguro ?');");
}

sqlConnection1.Close();
}

De verdad que no entiendo lo que falla. Ayuda!!!!!!
keither está desconectado   Responder Citando
Antiguo 02-mar-2004, 10:16   #8 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
Ahh...ok... ya vi elproblema... lo que pasa es que estabas cargando los atributos a un control que aparece cuando es tiempo de edición... y por eso no encontraba la referencia.

Intenta con esto:

En tu evento EditCommand, despues de que llenes tu datalist haz lo siguiente:

Cita:
private void myList_EditCommand(Object sender, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
..
..
myList.EditItemIndex = e.Item.ItemIndex;
myList.DataSource = dadesReader;
myList.DataBind();

((LinkButton)DLSeccionsDades.Items[e.Item.ItemIndex ].FindControl("esborrarDadaSeccio")).Attributes.Add ("onClick","return confirm('Está seguro ?');");
..
...
Con ello le estarás asignando ese atributo al actual item.

Ahora si te debe funcionar... te lo digo porque lo hice tanto con vb.net como c#
RootK está desconectado   Responder Citando
Antiguo 02-mar-2004, 10:34   #9 (permalink)
keither está en el buen camino
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Muchas gracias Rootk! ahora si que funciona!

keither está desconectado   Responder Citando
Antiguo 02-mar-2004, 12:12   #10 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.528
Enviar un mensaje por MSN a RootK
De nada friend...,me da gusto que ahora si te haya servido el ejemplo . . .
RootK está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 04:13.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93