![]() |
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. |
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:
|
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. |
Cita:
ejemplo. Cita:
|
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. |
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. :pensando: |
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!!!!!! :neurotico |
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:
Ahora si te debe funcionar... :arriba: te lo digo porque lo hice tanto con vb.net como c# |
Muchas gracias Rootk! ahora si que funciona! :arriba: :adios: |
De nada friend...,me da gusto que ahora si te haya servido el ejemplo . . . :-D |
| La zona horaria es GMT -6. Ahora son las 00:40. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.