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

confirm() JS en datalist

Estas en el tema de confirm() JS en datalist en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/03/2004, 12:04
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 01/03/2004, 15:38
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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 . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 02/03/2004, 03:28
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
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.
  #4 (permalink)  
Antiguo 02/03/2004, 09:17
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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
  #5 (permalink)  
Antiguo 02/03/2004, 09:50
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
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.
  #6 (permalink)  
Antiguo 02/03/2004, 10:16
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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.
  #7 (permalink)  
Antiguo 02/03/2004, 10:52
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
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!!!!!!
  #8 (permalink)  
Antiguo 02/03/2004, 11:16
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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#
  #9 (permalink)  
Antiguo 02/03/2004, 11:34
 
Fecha de Ingreso: febrero-2004
Mensajes: 67
Antigüedad: 20 años, 2 meses
Puntos: 0
Muchas gracias Rootk! ahora si que funciona!

  #10 (permalink)  
Antiguo 02/03/2004, 13:12
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
De nada friend...,me da gusto que ahora si te haya servido el ejemplo . . .
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 11:51.