25. januar 2004 - 13:06Der er
22 kommentarer og 1 løsning
Javascript validering i Repeater
Jeg har en slet knap i en repeater, på denne knap vil jeg gerne have lavet en bekræftelse af at posten skal slettes (javascript confirm), Men hvordan laver jeg dette i en repeater?
jeg vil nu mene at det nemmeste vil være bare at subclasse Button-klassen, og lave din egen som implementerer en javascript-confirm message.
using System;
namespace MPAConsult.ToolBox.Web.WebControls { /// <summary> /// Summary description for Button. /// </summary> public class Button : System.Web.UI.WebControls.Button { private bool confirm = false; private string confirmMessage;
public Button() : base() {
}
public bool Confirm { set { confirm = value; }
get { return confirm; } }
public string ConfirmMessage { set { confirmMessage = value; }
get { return confirmMessage; } }
protected override void Render(System.Web.UI.HtmlTextWriter writer) { if (this.Confirm) { if (confirmMessage != null) { this.Attributes.Add("onClick", "return confirm('"+ ConfirmMessage +"')"); } else { throw new ArgumentNullException("If you want there to be a confirm you need a confirm-message"); } }
Dvs. jeg ligger den i en cs fil der hedder Button.cs, og hvor skal denne klasse så placeres i fil systemet, skal den bare ligge i det projekt jeg laver? For det virker ikke rigtig for mig.
Jeg har prøvet paste ovenstående kode i en ny klasse som hed ImageButton (Jeg laver det på en image button istedet for en button) og har rette lidt i det ovenstående:
Så burde den vel bare overskrive <asp:imagebutton> eller hvad? Men det virker ikke, der kommer ingen confirm boks.
public class ImageButton : System.Web.UI.WebControls.ImageButton { private bool confirm = false; private string confirmMessage;
public ImageButton() : base() {
}
public bool Confirm { set { confirm = value; }
get { return confirm; } }
public string ConfirmMessage { set { confirmMessage = value; }
get { return confirmMessage; } }
protected override void Render(System.Web.UI.HtmlTextWriter writer) { if (this.Confirm) { if (confirmMessage != null) { this.Attributes.Add("onClick", "return confirm('"+ ConfirmMessage +"')"); } else { throw new ArgumentNullException("If you want there to be a confirm you need a confirm-message"); } }
Attributes tagprefix An alias to associate with a namespace. tagname An alias to associate with a class. Namespace The namespace to associate with tagprefix. Src The location (relative or absolute) of the declarative user control file to associate with the tagprefix:tagname pair. Assembly The assembly in which the namespace that you are associating with tagprefix resides. Note The assembly name does not include a file name extension.
Example The following code fragment uses @ Register directives to declare tagprefix and tagname aliases for a server control and a user control. The first directive declares the MyTag alias as a tag prefix for all controls residing in the MyCompany:MyNameSpace namespace. The second directive declares Acme:AdRotator as a tagprefix:tagname pair for the user control in the file Adrotator.acscx. The aliases are then used in custom server-control syntax within the form to insert an instance of each server control. <%@ Register Tagprefix="MyTag" Namespace="MyCompany:MyNameSpace" Assembly="MyAssembly" %> <%@ Register Tagprefix="Acme" Tagname="AdRotator" Src="AdRotator.ascx" %> <HTML> <body> <form runat="server"> <MyTag:MyControl id="Control1" runat="server" /><BR> <Acme:AdRotator file="myads.xml" runat="server" /> </form> </body> </HTML>
JA du må meget undskylde jeg spørg så meget, men jeg hvad mener du når du skriver "åbner mit sdk og søger efter @ Register" ? er det nogte der skal ligge i mit projekt, eller i c:\programmer\Microsoft.NET\sdk ?
public class ImageButton : System.Web.UI.WebControls.ImageButton { private bool confirm = false; private string confirmMessage;
public ImageButton() : base() {
}
public bool Confirm { set { confirm = value; }
get { return confirm; } }
public string ConfirmMessage { set { confirmMessage = value; }
get { return confirmMessage; } }
protected override void Render(System.Web.UI.HtmlTextWriter writer) { if (this.Confirm) { if (confirmMessage != null) { this.Attributes.Add("onClick", "return confirm('"+ ConfirmMessage +"')"); } else { throw new ArgumentNullException("If you want there to be a confirm you need a confirm-message"); } }
Src skal pege på en usercontrol... altså en ascx-fil. For at bruge ovenstående knap skal du compile den in din assembly og bruge følgende Register-tag:
<%@ Register tagprefix="minKnap" Namespace="MPAConsult.ToolBox.Web.WebControls" Assembly="nNavn_på_din_assembly (oftest navnet på din dll-fil, uden .dll" %>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.