i am trying to implement a button click event and trying to call it in my java script function without actually clicking the button.
protected void btn_hid_Click(object sender, EventArgs e) {
string fbid = tb_id.Text;
query = "select userid from users where fbid='" + fbid + "'";
ds = db.SelectDs(query);
}
now i want to call this function in javascript function as soon as page load occurs and java script is called.
function func() {
alert("hiden");
$(document).ready(function () {
control or simple html control
$("[id*='btn_hid']").click();
});
alert("hiden end");
}
but this is not happening.Could you please tell how to do it?
You can try with this code
btn_hid.Attributes.Add("onclick","return YourFunction()");
Nota : if your wish also register dynamically your script you can use
var script = "";
Page.RegisterStartupScript("YourkeyOfScript",script);
Nota : You can also use OnClientClick in your interface
Your code is right. but It may be some problem. you can try with the alternate code.
using the following line of code.
__doPostBack('<%= btn_hid.ClientID %>', '')
Related
I have problem with my iframe asp.net page.
Browser url containst parameter which I need to use in my iframe page.
Obviously I can't get access via .NET so I came up with the idea that at the end of the Page_Load method add sth like that :
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bool isReloaded = Request.QueryString.GetValue<bool>("reloaded");
ContentId = Request.QueryString.GetValue<int>("contentId"); //I need this value
if (!isReloaded)
{
StringBuilder js = new StringBuilder("<script language='javascript'>");
js.Append("var last = window.top.location.href.substring(window.top.location.href.lastIndexOf('/') + 1, window.top.location.href.length); ");
js.Append("window.location.href = window.location.href + '?reloaded=true&contentId=' + last;");
js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.reload();");
js.Append("<" + "/script>");
Response.Write(js.ToString());
}
}
}
In shortcut I use Javascript to get value I need and fire reload() but with changed QueryString.
Page_Load is firing again and now I have bool isReloaded filled with true.
The condition (!isReloaded) blocks that this time javascript will not be added to Response.
I don't know why, but Page_Load fires again, this time without added parameters so it's the same situation as at the beginning and again is adding JS etc.
Result is that Page_load fires endlessly.
What did I do wrong ? What is the reason ?
if you have a look at your code, you have this line:
js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.reload();");
you are checking the location.href for the 'reloaded' var, but note that your page is reloaded as soon as you change the location, and your script keeps executing before it is done, so it results in reloading of the page over an over again without the query string.
remove this line and it should work fine.
another thing though, i changed your code a little bit to register the script on page instead of response.write it,
it shouldnt make any difference, but if your code still doesnt work then try my version:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bool isReloaded;
int ContentId;
bool.TryParse(Request.QueryString["reloaded"],out isReloaded);
int.TryParse(Request.QueryString["contentId"],out ContentId); //I need this value
if (!isReloaded)
{
StringBuilder js = new StringBuilder();
js.Append("var last = window.top.location.href.substring(window.top.location.href.lastIndexOf('/') + 1, window.top.location.href.length); ");
js.Append("window.location.href = window.location.href + '?reloaded=true&contentId=' + last;");
ExecScript(js.ToString());
}
}
}
void ExecScript(string script)
{
Page page = HttpContext.Current.CurrentHandler as Page;
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("AttachedScript"))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "AttachedScript", script, true);
}
}
Thanks for help.
Now I have sth like that and it's ok.
StringBuilder js = new StringBuilder("<script language='javascript'>");
js.Append("var last = window.top.location.href.substring(window.top.location.href.lastIndexOf('/') + 1, window.top.location.href.length); ");
js.Append("if(window.location.href.indexOf('reloaded=true') == -1) window.location.href = window.location.href + '?reloaded=true&contentId=' + last;");
js.Append("<" + "/script>");
I didn't know that editing location executes reload automatically ;)
Thanks again
I have an Enable.js file that has an Enable() function. I want to call this Enable function from the C# codebehind. My .js file and c# file are in same application.
I have tried this, but it doesn't help me.
Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "Enable(true)", true);
Try this:
ScriptManager.RegisterClientScriptInclude(
this,
typeof(Page),
"Enable-js",
ResolveClientUrl("~/scripts/Enable.js"));
ScriptManager.RegisterStartupScript(
this, GetType(), Guid.NewGuid().ToString(),
"Enable(True);", true);
http://msdn.microsoft.com/pt-br/library/bb337005.aspx
I could see "click" in your code. Hence, I assume that you need to click some button to call Enable(true) function inside Enable.js file
Follow these below steps:
Reference your Enable.js file inside <head> section like below.
<script src="Scripts/Enable.js" type="text/javascript"></script>
Enable.js file is given below:
function Enable(var){
alert(val)
}
To call on Enable() function on Button1's click event:
protected void Page_Load(object sender, EventArgs e){
Button1.Attributes.Add("OnClick", "return Enable('true');");
}
Let me know if you need some more help.
I wrote a nice little function for calling jquery or just general JS in C# based on some VB I saw a while ago.
public bool runJQueryCode(string message)
{
ScriptManager requestSM = ScriptManager.GetCurrent(Page);
if (requestSM != null && requestSM.IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), Guid.NewGuid().ToString(), getjQueryCode(message), true);
}
else
{
Page.ClientScript.RegisterClientScriptBlock(typeof(Page), Guid.NewGuid().ToString(), getjQueryCode(message), true);
}
return true;
}
private string getjQueryCode(string jsCodetoRun)
{
string x = "";
x += "$(document).ready(function() {";
x += jsCodetoRun;
x += " });";
return x;
}
So you can just call runJqueryCode("alert('hey')");
You are making a mistake here:
Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "Enable(true)", true);
The Enable(true) is not possible its literal string true that you're trying to pass as parameter.
You should try this way, so it may help.Its only a sample for understanding
string func = "showSuccessMessage('"+name+"');";
//Pass string as funcion in c#
This Link will explain calling javascript function with parameter from C# Code behind.
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "xx",
"<script>test("+x+","+y+");</script>");
I have the following:
public MainPage()
{
webBrowser1.ScriptNotify += new EventHandler<NotifyEventArgs>(webBrowser1_ScriptNotify);
}
void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e)
{
// ... some code ...
webBrowser1.InvokeScript("nativeCallback", response.Serialize());
}
The script notify is triggered when a user presses a button on the web page. I am trying to invoke the JavaScript below but i keep getting Error 80020101.
<script type="text/javascript">
function nativeCallback(e){
document.getElementById('callbackDiv').appendChild("<b>" + e + "</b>");
}
</script>
80020101 means that there is a problem compiling the function ready to execute it.
The problem is that appendChild() is expecting a node to be passed and you're giving it a string.
Try this instead:
<script type="text/javascript">
function nativeCallback(e){
var b = document.createElement('b');
b.innerHTML = e;
document.getElementById('callbackDiv').appendChild(b);
}
</script>
You can also access callbackDiv directly:
callbackDiv.appendChild(b);
i have a button1_click() function which runs on page load,,now i want to call this function from javascript,,for that purpose i need to do dopostback in javascript,,can nyone tell how can i do that..as u can see my pageload function that button1_click() runs on postback
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int l = files.Length;
Button1.Attributes.Add("onclick", " alertMe("+ l.ToString() +");");
}
Button1_Click();
}
my javascript code :
function alertMe(len)
{
if(len>3)
//do postback(post back will run Button1_click function)
else
alert('Hello');
}
This is a helpful link
From the article:
"
Calling postback event from Javascript
There may be some scenario where you may want to explicitly postback to the server using some clientside javascript. It is pretty simple to do this.
ASP.NET already creates a client side javascript method as shown below to support Postbacks for the web controls:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
"
one way would be to use an actual asp:Button and utilize the OnClientClick event...
<asp:Button id="myButton" runat="Server" OnClick="Button1_Click" OnClientClick="alertMe();" />
function alertMe()
{
if (this.len>3)
{
return true;
}
else
{
return false;
}
}
if alertMe returns true, the the postback to the server will occur, if it returns false,
it won't.
here is a link to more details on the OnClientClick event.
It looks like you want to use ajax to call this server method. You can use ajax.net to do this. Obviously as a result it will not be postback.
Have a look here for examples
Possibly this:
function alertMe(len)
{
if(len>3)
//do postback(post back will run Button1_click function)
alertMe(len);
else
alert('Hello');
}
I would always try to avoid inline js though
I am inside of...
public class bgchange : IMapServerDropDownBoxAction
{
void IServerAction.ServerAction(ToolbarItemInfo info)
{
Some code...
and after "some code" I want to trigger
[WebMethod]
public static void DoSome()
{
}
Which triggers some javascript. Is this possible?
Ok, switch methods here. I was able to call dosome(); which fired but did not trigger the javascript. I have tried to use the registerstartupscript method but don't fully understand how to implement it. Here's what I tried:
public class bgchange : IMapServerDropDownBoxAction
{
void IServerAction.ServerAction(ToolbarItemInfo info)
{
...my C# code to perform on dropdown selection...
//now I want to trigger some javascript...
// Define the name and type of the client scripts on the page.
String csname1 = "PopupScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}
}
}
I got the registerstartupscript code from an msdn example. Clearly I am not implementing it correctly. Currently vs says "An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.ClientScript.get' refering to the piece of code "Page.Clientscript;" Thanks.
I'm not sure I fully understand the sequence of what you are trying to do, what's client-side and what's not....
However, you could add a Start-up javascript method to the page which would then call the WebMethod. When calling a WebMethod via javascript, you can add a call-back function, which would then be called when the WebMethod returns.
If you add a ScriptManager tag on your page, you can call WebMethods defined in the page via Javascript.
<asp:ScriptManager ID="scriptManager1"
runat="server" EnablePageMethods="true" />
From the Page_Load function you can add a call to your WebMethod..
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"callDoSome",
"PageMethods.DoSome(Callback_Function, null)",
true);
Callback_Function represents a javascript function that will be executed after the WebMethod is called...
<script language="javascript" type="text/javascript">
function Callback_Function(result, context) {
alert('WebMethod was called');
}
</script>
EDIT:
Found this link for Web ADF controls. Is this what you are using??
From that page, it looks like something like this will do a javascript callback.
public void ServerAction(ToolbarItemInfo info) {
string jsfunction = "alert('Hello');";
Map mapctrl = (Map)info.BuddyControls[0];
CallbackResult cr = new CallbackResult(null, null, "javascript", jsfunction);
mapctrl.CallbackResults.Add(cr);
}
If the above is how you are calling RegisterStartupScript, it won't work because you don't have a reference to the "Page" object.
bgchange in your example extends Object (assuming IMapServerDropDownBoxAction is an interface), which means that there is no Page instance for you to reference.
This you did the exact same thing from a Asp.Net Page or UserControl, it would work, because Page would be a valid reference.
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"helloworldpopup",
"alert('hello world');",
true);
}
}
You cannot call methods within a browser directly from the server. You can, however, add javascript functions to the response that will execute methods within the browser.
Within the ServerAction method, do the following
string script = "<script language='javascript'>\n";
script += "javascriptFunctionHere();\n";
script += "</script>";
Page.RegisterStartupScript("ForceClientToCallServerMethod", script);
More info here
hmmm... the question changed dramatically since my original answer.
Now I think the answer is no. But I might be wrong.