webForumDet fria alternativet

Koppla javascript till en asp:linkbutton

.NET

29 svar · 888 visningar · startad av wwwstekaren

Medlem sedan apr. 2003234 inlägg
Frågan#1

Jag försöker koppla ett javascript till en linkbutton som ligger i en datagrid. Får inte det att funka. Det ska komma upp ett alertfönster som frågar om man vill ta bort en person jag eller nej.

Medlem sedan maj 20012 812 inlägg
#2

Det finns olika sätt att göra det på, men den som jag tycker är smidigast och helt klart snyggast är att man i preRender lägger till ett onClick attribut för knappen.

Kolla här: http://eforum.idg.se/viewmsg.asp?entriesid=443455
så kanske du förstår vad jag menar.

- M

Medlem sedan maj 2001329 inlägg
#3

typ

myLinkButton.Attributes["OnClick"] = "javascriptfunction();";

eller skriv det i design läget, räcker med en htmlkontroll.

På sidan lägg till en javascriptsfunction.

<script language="javascript">
function javascriptfunction(){
  if(Alert("Vill du ta bort personen?")){ //finns väl nått annat en alert som returnera true eller false, men det vet nog du :)
    HiddenB.click(); //kan vara Click med stort c då java är helt cp vad det gäller små o stora bokstäver.
}
</script>

Lägg sedan till en knapp på sidan, tex

<asp:button id="HiddenB" style="VISIBILITY: hidden" runat="server"></asp:button>

Du kan sen koppla knappen mot en händelse som vanligt och där göra dina funktioner som ska tabort personen i fråga.

Visst ja, du måste nog ha med ett id eller liknande så du vet vilken person du ska tabort. Detta kan du ju fixa genom ett hidden fält som du kan läsa av (samma princip som den gömda knappen, ta bara en textbox och dölj den på samma sätt.) Men du kommer nog på nått bättre sätt själv.

ps. Kopiera inte min kod skriver den mer eller mindre rakt uppochner som vanligt.

Medlem sedan maj 2001329 inlägg
#4

re: Gladh

TUFFT....

Medlem sedan apr. 2003234 inlägg
#5

håller på att testa exemplet som Gladh lade in jag får fel här

dellink.Attributes.Add("onclick", "return confirm ('Are you sure?');");

felmedelande
Object reference not set to an instance of an object

Medlem sedan maj 2001329 inlägg
#6

Fungerade finnt för mig.

Är du säker på att dellink finns?

Tack tipset Gladh var hur snyggt som helst, blir till att gå ignom alla sidor och rensa bort lite onödiga javascripts mm.

Medlem sedan apr. 2003234 inlägg
#7

japp dellink finns, jag har en asp:LinkButton som ligger i en datagrid

Medlem sedan apr. 2003234 inlägg
#8

Min kod
aspx filen

<HEAD>
		<script language="javascript">
			function javascriptfunction()
			{
			if(Alert("Vill du ta bort personen?")){ //finns väl nått annat en alert som returnera true eller false, men det vet nog du 
			HiddenB.click(); //kan vara Click med stort c då java är helt cp vad det gäller små o stora bokstäver.
			}
		</script>

forsättning på aspx filen

asp:TemplateColumn>
						<ItemTemplate>
							<div class="button">
								<asp:LinkButton CommandName="Edit" Text="Edit" runat="server" ID="Linkbutton2">
									<img src="edit.gif" align="left" border="0" alt="Edit"></asp:LinkButton></div>
							<div class="button">
								<asp:LinkButton ID="myLinkButton" Text="Delete" runat="server">
									<img src="trashcan.gif" align="left" border="0" alt="Delete"></asp:LinkButton></div>
						</ItemTemplate>
						<EditItemTemplate>
							<div class="button">
								<asp:LinkButton CommandName="Cancel" Text="Cancel" runat="server" ID="Linkbutton4">
									<img src="cancel.gif" border="0" alt="Cancel" align="left"></asp:LinkButton></div>
							<div class="button">
								<asp:LinkButton CommandName="Update" Text="Add/Update" runat="server" ID="Linkbutton5">
									<img src="add.gif" alt="Add/Update" border="0" align="left">
								</asp:LinkButton></div>
						</EditItemTemplate>

aspx.cs

		protected System.Web.UI.WebControls.LinkButton myLinkButton; 

protected void Page_Load(Object src, EventArgs e)
		{
			if(!IsPostBack)
			{
				BindGrid(null, "Responsible");
				myLinkButton.Attributes["OnClick"] = "javascriptfunction();";
				//dellink.Attributes.Add("onClick","return confirm('Are you Sure you want to delete');");

				//binddata();
			}
		
		}

vad gör jag för fel?

Medlem sedan apr. 2003234 inlägg
#9

jag har nu gått tillbaka där min kod funkade senast. Testar nu att göra allt från början, men som sakt jag har en linkbutton det går väll lika bra med det? jag har en bild som man ska klicka på och då ska det komma upp en alert som frågar om man vill ta bort personen

Medlem sedan sep. 20011 914 inlägg
#10
lbtGrr.Attributes("onclick") = "javascript:if(!confirm(""Är du säker?"")){return false;}";
Medlem sedan apr. 2003234 inlägg
#11

lbtGrr är namnet på min linkbutton?

Medlem sedan sep. 20011 914 inlägg
#12

Jo. Du får byta.

Medlem sedan apr. 2003234 inlägg
#13

det har jag gjort

Koden nedan funkar inte för c#

lbtGrr.Attributes("onclick") = "java script:if(!confirm(""Är du säker?"")){return false;}";
Medlem sedan apr. 2003234 inlägg
#14

koden som du skrev ska ligga i aspx.cs filen i page_load funktionen:)

Medlem sedan apr. 2003234 inlägg
#15

Det är på denna knapp som ligger i en datagrid som jag vill ska trigga javascriptet

<asp:LinkButton ID="lbDelete" CommandName="Delete" Text="Delete" runat="server">
									<img src="trashcan.gif" align="left" border="0" alt="Delete"></asp:LinkButton></div>
						</ItemTemplate>
Medlem sedan maj 20012 812 inlägg
#16

Följande fungerar bra för mig.

aspx sidan

		<asp:DataGrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 80px; POSITION: absolute; TOP: 56px" runat="server">
			<Columns>
				<asp:TemplateColumn>
					<ItemTemplate>
						<asp:LinkButton ID="cmdDelete" OnPreRender="cmdDelete_onPreRender" OnClick="cmdDelete_onClick" Runat=server>click me</asp:LinkButton>
					</ItemTemplate>
				</asp:TemplateColumn>
			</Columns>
		</asp:DataGrid>

CodeBehind sidan:

.
.
.
		protected void cmdDelete_onPreRender(object sender, System.EventArgs e)
		{
			((LinkButton)sender).Attributes.Add("onclick", "return confirm ('Are you sure?');");
		}

		protected void cmdDelete_onClick(object sender, System.EventArgs e)
		{
			((LinkButton)sender).Text = "Clicked";
		}
.
.
.

Du måste använda dig av sender propertyn i onClick och i onPreRender eftersom annars vet du inte vilken LinkButton det är eftersom alla heter samma sak.

- ;

Medlem sedan apr. 2003234 inlägg
#17

tackar funkar jätte bra, ska bara fixa till den lite nu:)

En sak hur får jag in en bild i stället för texten "Clicked"

protected void cmdDelete_onClick(object sender, System.EventArgs e)
		{
			((LinkButton)sender).Text = "Clicked";
		}
Medlem sedan maj 20012 812 inlägg
#18

Det kan du inte med LinkButton, då får du använda ImageButton istället.

- M

Medlem sedan apr. 2003234 inlägg
#19

kan du hjälpa mig med koden till det för jag får det inte att fungera, tack för all hjälp hitils

Medlem sedan apr. 2003234 inlägg
#20

sedan att om man klickar på cancel på alertfönstert ska det inte hända något det gör det inte här men det blir ett java fel

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)