OnClientClick does not works on asp.net LinkButton - c#

I have an asp.net linkbutton, which contains the OnClientClick property, however the function within the OnClientClick never gets called, it directly jumps to OnClick function.
Below are the 2 ways I am using LinkButton as:
<asp:LinkButton ID="btn" CssClass="button" Text="Browse Thumbnail" runat="server"
OnClientClick="return confirm('Are you sure you want to delete?');">
</asp:LinkButton>
and:
<asp:LinkButton ID="lnkDelete" runat="server"
OnClientClick="return confirm('Are you sure you want to delete this slide?');"
CommandName="DeleteThumbnail" CommandArgument='<%# Container.DataItemIndex %>'>
<asp:Image ImageUrl="~/images/delete.gif" ID="imgDelete" runat="server"></asp:Image>
</asp:LinkButton>
Both of the approaches does not works.
Can anyone please provide some solution for the same.

OnClientClick="javascript:return confirmAction();"
function confirmAction() {
if(confirm('Are you sure you want to delete?')) {
// you clicked the OK button.
// you can allow the form to post the data.
return true;
}
else {
return false;
}
}
implement the Onclick on the server side
protected void lnkdelete_Click(object sender, EventArgs e)
{
}
and if you dnt want to call server method use this
OnClientClick="javascript:confirmAction(); return false;"

There is most probably some other page element that is preventing this event from being fired.
Do you have any other page elements that might interfere? Have you tried removing all other page elements but this one? Do you have some AJAX calls that might interfere? Have you tried this with a simple html element (not asp.net)?
You are most probably doing everything fine in your link button but it seems like problem is elsewhere.

Place it in single quotes like below,
<asp:LinkButton ID="btn" CssClass="button" Text="Browse Thumbnail" runat="server" OnClientClick="return confirm('Are you sure you want to delete?');"></asp:LinkButton>

Use like this
function Navigate()
{
javascript: window.open("microsoft.com");
return false;
}
and on clientclick as follows
OnClientClick="return javascript:Navigate()"
or even
function Navigate()
{
window.open("microsoft.com");
return false;
}
OnClientClick="return Navigate()"

Seems like you have Disabled the javascript in IE. Just enable it & you are good to go. You can follow this post to enable/disable the javascript in IE:
http://browsers.about.com/od/internetexplorertutorials/ss/disable-javascript-ie9.htm

There is no problem with your OnClientClick method it should prompt confirm window. but you haven't specify the onclick event of the link button. So you will not able to get the event from code behind.
You may need to enable java scripts for your browser
How to enable JavaScript in a web browser?
Are you using Ajax toolkit? Update panel? then you need to register script by using script manager
To inject a confirm script from a AJAX postback,
ScriptManager.RegisterOnSubmitStatement(btn, Page.GetType(), "confirm", "return confirm('Are you sure');");

Related

Using a Resource File on buttons OnClientClick

I would like to use a resource file to display the dialog box which is displayed on client click, i have tried the below however I am getting the result in the screen shot:
<asp:Button ID="editview" runat="server" Text="<%$ Resources:btnEditViewText%>" CssClass="buttonlink"
OnClientClick="return confirm('<%$ Resources:btnEditViewText%>');"
CommandName="editview"
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id")%>'/>
I have seen a few people suggest setting this in the code behind however this control is wrapped in a repeater and I can only get a handle on it once the ItemCommand event is triggered which requires the confirmation dialogue to have been confirmed.
This feels like a bit of a catch 22 and im out of ideas, any suggestions guys?
Thanks Ben, this worked
protected void rptVessels_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Button button = (Button)e.Item.FindControl("editview");
button.OnClientClick = String.Format("return confirm('{0}')", GetLocalResourceObject("alertEditVesselText").ToString());
}
This is my code and it works! But I also prefer code behind solution especially for single controls.
In my project, i use this in nested repeaters so I do not need to use OnItemDataBound method. Its so easy...
OnClientClick='<%#String.Concat("if ( !confirm(\u0027", Resources.Resource.AreYouSureToDelete, "\u0027)) return false;") %>'
I found the best solution
<script type="text/javascript">
function DeleteItem() {
if (confirm(document.getElementById('<%=hdelete.ClientID%>').value)) {
return true;
}
return false;
}
</script>
<asp:HiddenField runat="server" ID="hdelete" Value="<%$Resources:Resources, Confiemdelete %>" />
<asp:Button ID="btnmergewithname" runat="server" Text="<%$Resources:Resources, Delete %>" OnClientClick="return DeleteItem()"/>

How to implement a click event on textbox in ASP.NET?

In my web application I need a functionality so that when users click on textbox to input values, it should make the button and the other fields visible?
I am using the code provided below but, could not get it working.
C#:
protected void TextBox1_Click(object sender, EventArgs e)
{
ButtonSearch.Visible = true;
}
ASP.NET:
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" OnClick="TextBox1_Click"></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Click" Text="Search" Visible="False" />
How to accomplish this?
Set AutoPostback="True". This way the event will be fired server-side, and the button will become visible.
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" OnClick="TextBox1_Click" AutoPostBack="true"></asp:TextBox>
However, if you only want to toogle visility of a button, you really should considerate javascript. This will save a trip back to the server.
<asp:TextBox onclick="txtBox1_ClientClicked()" ID="TextBox1" runat="server" OnClick="TextBox1_Click"></asp:TextBox>
<asp:Button ID="ButtonSearch" runat="server" OnClick="ButtonSearch_Click" Text="Search" style="display:none;" />
<script type="text/javascript">
function txtBox1_ClientClicked(){
var theButton = document.getElementById('<%=ButtonSearch.ClientID%>');
theButton.style.display = 'block';
}
</script>
You do not need to post back to the server to accomplish your job. You can use client side onFocus event and javascript/jquery, for example.
I know I used an input of type text, and you are using an ASP Control which posts on server, but here is a JSFiddle to get you on the right track: http://jsfiddle.net/Mmjtz/1/
$("<%= ButtonSearch.ClientID %>").click(function(){
$("#TextBox1").show():
});
In this code you need to pass fields ID which you want to visible on the click of button.
Put the textbox inside a div and use the div's onClick event from codebehind. It's not what you asked but it works for me without any errors. Here is a javascript function to implement requested event:
function toggleVisibility()
{
document.getElementById('TextBox1').disabled = true;
/*
...some other code...
*/
}
And of course, you have to define your onclick event at the div definition after implementing this JS function.
<div id="TBdiv" onClick="toggleVisibility()">
<asp:TextBox ID="TextBox1"..../>
</div>
IMPORTANT: Since you now disabled your TextBox from codebehind, you have to enable it in somewhere before you want to use it again. Otherwise you will not see it while the page is running.
jQuery is the perfect solution for your problem. The code would be something like this:
$("#TextBox1").on("click",function(){$("#ButtonSearch").css("visibility", "visible");})
You include the script by adding <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> to the page and then you can add the piece of code above to within <script></script> tags.

asp.net button click client and server side code

I have an asp:button called "Delete" and what I want to do is have a JavaScript confirm popup with the options "Yes" and "No". If "Yes" then delete a record from a SQL DB else if "No" then nothing should happen.
<asp:Button runat="server" ID="btnDelete" Text="Delete"
OnClientClick="if(confirm('Delete?'))alert('You chose yes!');else alert('You chose no!')"
OnClick="btnDelete_Click" />
btnDelete_Click contains SQL delete logic.
The problem I am having is that the OnClick method always gets executed. Whether you pick "Yes" or "No" from the JavaScript popup the record gets deleted regardless. It seems to always cause a postback.
Can I somehow get the "Yes" or "No" result into my code behind so I can actually do a simple "if" statement for the delete logic?
Try this, on your javascript do this
var result = Confirm("Are you sure . . . . ");
if(result)
return true;
else
return false;
what it does is if it's true, it should postback your code, else it'd cancel your click.
That should be:
<asp:Button runat="server" ID="btnDeleteSite" Text="Delete" OnClientClick="return confirm('Format Delete?');" OnClick="btnDeleteSite_Click" />
You should ideally put JS event handlers in the script tag, and call them from your OnClientClick event in the button definition. Like so:
<script type="text/javascript">
function ConfirmDelete() {
return confirm("Delete?");
}
</script>
And then in your button's OnClientClick event, you do this:
OnClientClick="return ConfirmDelete()"
This keeps your markup clean and readable, and will also prevent the postback from happening if the user chooses 'No'.
Try with this
<asp:Button runat="server" ID="btnDelete" Text="Delete" OnClientClick="if(confirm('Delete?')){return true;}else {return false;} OnClick="btnDelete_Click" />
When you are using OnClientClick event with JS confirm dialog box at that time you need to return true or false. If it will return True then OnClick(Server side) event will fire otherwise it will not.

server tag not well formed error

I know there are a lot of threads about this error, but I've looked through all of them and haven't been able to make it work. It's probably something very small that I am overlooking.
This is the code I have now, in an asp:Button component
<asp:Button ID="btn_profile" runat="server" Text="Bekijk de wenslijst"
CssClass="wenslijst_preview_btn"
OnClick="btn_goToChild_Click(<%# Eval("pk_child_id") %>)"/>
I have tried multiple things, for example the following:
OnClick='btn_goToChild_Click(<%# Eval("pk_child_id") %>)'
But then I get the following error:
preprocessor directives must appear as the first non-whitespace character on a line
If you need to see more code, let me know!
OnClick is a server-side event, so should just be the name of a server-side event handler. OnClientClick (where available) is a client-side event handler, so would take a JavaScript expression to evaluate.
Try
<asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick='btn_goToChild_Click(<%# Eval("pk_child_id") %>)' />
<asp:Button ID="btn_profile" runat="server" Text="Bekijk de wenslijst"
CssClass="wenslijst_preview_btn" CommandArgument='<%# Eval("pk_child_id") %>'
OnClick="btn_goToChild_Click"/>
protected void btn_goToChild_Click(object sender, EventArgs e)
{
Button btn= (Button) sender;
if (btn==null) return;
var id =btn.CommandArgument;
// Or int id=(int)btn.CommandArgument;
}
If you want to use Javascript expression, use OnClientClick not OnClick. These are different side events.
OnClick is used for server side methods only, for client side calls you should use "OnClientClick" attribute.

Javascript to code behind in c# asp.net

Hi im looking to find out after I do this:
c#
div.Attributes.Add("onclick", "return confirm_delete();");
javascript:
function confirm_delete()
{
if (confirm("Are you sure you want to delete this comment?")==true)
return true;
else
return false;
}
It pops up with a message box with yes and no if I press yes how can I add a function into my c# how can I call it?
If yes go to c# code behind
and add in confirm_delete
if yes was clicked
do this
I need it so when some one clickes yes I can (from code behind in asp.net c#) add in a method to delete from mysql database.
Just dont know how I refrence to the javascript
public static string confirm_delete()
{
return something (dont know how to)
}
How about this add a button with the clientside click event instead of adding it in the code behind. Check to see if the popup returns true. If you return false it should prevent the server side event from firing.
<asp:Button ID="btn" OnClientClick="if(confirm_delete()){
/* post back*/
}else{
return false;
};" OnClick="btnDelete_Click" runat="server" Text="delete"/>
protected void btnDelete_Click(object sender, EventArgs e)
{
//run your serverside code if confirm was pressed.
}
Your JavaScript will need to call a page on your server. This is typically accomplished with AJAX and a web service.
This page on MSDN has a good overview of what's involved.
If you're interested in using jQuery, this page has a simple example.
You may be able to use a PageMethod to call your codebehind function, check out the following link for an example
ASP.NET Ajax PageMethods
Wondering why you are using a div? Can't you use asp.net Button / LinkButton and limiting it's postback based on confirm value?
e.g.
<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False"
CommandName="Delete" Text="Delete"
OnClientClick="return confirm('Are you certain you want to delete this
product?');">
</asp:LinkButton>
Reference.

Categories