awilderbeast
asked on
c# running a javascript and a codebehind function on same button?
Hi all,
not sure if this is possible becuase a .net button on click has a value of javascript:dopostback_ etc
but basically, i want a code behind function to run then a javascript one i can make it do one or the other and at the moment the code is only doing the javascript one and ignoring the c# one
any ideas on how i can do this?
not sure if this is possible becuase a .net button on click has a value of javascript:dopostback_ etc
but basically, i want a code behind function to run then a javascript one i can make it do one or the other and at the moment the code is only doing the javascript one and ignoring the c# one
any ideas on how i can do this?
############################## aspx page
<script>
$(document).ready(function () {
$(".dialog-modal-history").dialog({
height: 450,
width: 700,
autoOpen: false,
modal: true,
dialogClass: 'Dialog',
title: 'Work History'
});
$('.butHistoryDialog').click(function () {
$('.dialog-modal-history').dialog('open');
// prevent the default action, e.g., following a link
return false;
});
$('.dialogclose').click(function () {
$('.dialog-modal-history').dialog('close');
// prevent the default action, e.g., following a link
return false;
});
});
function HistoryClick() {
dialog = document.getElementById("butHistoryDialog");
dialog.click();
}
</script>
<asp:Repeater runat="server" ID="rptJobHistory" OnItemDataBound="rptJobHistory_OnItemDataBound">
<ItemTemplate>
<tr class="<%# Container.ItemIndex % 2 == 0 ? "Odd" : "Even" %>">
<td>
<%# Eval("DateStart", "{0:MMM yyyy}")%>
</td>
<td>
<%# ifdatenotend(Eval("DateEnd", "{0:MMM yyyy}"))%>
</td>
<td>
<%# Eval("Title") %>
</td>
<td>
<%# Eval("Company") %>
</td>
<td>
<asp:LinkButton ID="View" runat="server" CommandArgument=<%# Eval("ID") %>>Edit</asp:LinkButton>
</td>
<td>
<asp:LinkButton runat="server" OnClick="Delete" CommandArgument=<%# Eval("ID") %>>Delete</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table></td>
<td><asp:Button ID="butAddJobHistory" runat="server" Text="Add History" SkinID="MessageButton" CssClass="opener" />
<input runat="server" ID="butHistoryDialog" type="button" class="butHistoryDialog" clientidmode="Static" /></td>
</tr>
</table>
####################### code behind
protected void rptJobHistory_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton ViewHistory = e.Item.FindControl("View") as LinkButton;
ViewHistory.Click += new EventHandler(History);
smUpdate.RegisterAsyncPostBackControl(ViewHistory);
ViewHistory.Attributes.Add("onclick", "javascript:HistoryClick();");
}
}
ASKER
i did use onclientclick and it executed the wrong way round for my scenario, it loaded the dialog then iflled it (or atleast seemed to)
im not sure my updatepanel is functionign correctly
can i use onclick and onclientclick together then?
im not sure my updatepanel is functionign correctly
can i use onclick and onclientclick together then?
You could register a client script block that either calls a function on the page or you could write out the javascript function in code behind and paste the whole thing into csText1 in the following example. You could place it at the end of OnItemDataBound, however, you will want to check if the script is already registered because OnItemDataBound runs repeatedly, once for each item in the repeater.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegist ered(cstyp e, csname1))
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(c stype, csname1, cstext1);
}
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegist
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(c
}
ASKER
the below just runs the javascript function, the c# function isnt run at all
not sure i follow you tommyboy never seen this method before can you show me an example?
Thanks
not sure i follow you tommyboy never seen this method before can you show me an example?
Thanks
protected void rptJobHistory_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton ViewHistory = e.Item.FindControl("View") as LinkButton;
ViewHistory.Click += new EventHandler(LoadHistory);
ViewHistory.OnClientClick = "javascript:HistoryClick();";
smUpdate.RegisterAsyncPostBackControl(ViewHistory);
}
}
check the rendered HTML for existing of "onclick="javascript:Histo ryClick(); "
What event triggers the code behind function to run, the butAddJobHistory button click? Then in the click handler for that button, do what you need to do in C# then use the RegisterStartUpScript function to print a javascript call to the response. When the page reloads on the client end the javascript will be called. What javascript function are you wanting to call, the HistoryClick()? Then in the button click handler end with:
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegist ered(cstyp e, csname1))
{
String cstext1 = "HistoryClick();";
cs.RegisterStartupScript(c stype, csname1, cstext1);
}
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegist
{
String cstext1 = "HistoryClick();";
cs.RegisterStartupScript(c
}
Working sample of RegisterClientScriptBlock.
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace testApp1
{
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(this.GetType(), "test"))
{
String cstext1 = "HistoryClick();";
cs.RegisterStartupScript(this.GetType(), "test", cstext1, true);
}
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" Inherits="testApp1.Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
function HistoryClick() {
alert("HistoryClick is running");
dialog = document.getElementById("butHistoryDialog");
dialog.click();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="container"></div>
</form>
</body>
</html>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
had to use alternate method
the POST action will be canceled by returning false.