Hej. Jag brukar anropa javascript-funktionen som genereras på .Net sidorna, "__doPostBack();". Det där är ju ett sätt.. men jag gillar best practice ;)Trigga postback via js?
jag vill göra detta.
Man klickar på en ASP:ImageButton och denna triggar ett clientscript som poppar upp ett popup-fönster...
popup-fönstret låter använder välja en bild som sedan skickas tillbaka via returvärde
Nu vill jag att detta värde postbackas till serverside så att jag kan snappa upp det och populera imagebuttonen med den valda bilden (samt spara lite data för vad det innebär att völja just den bilden)
Det viktiga är allså att postbacken förknippas med rätt imagebutton (finns flera på sidan) och att värdet följer med...
Man kan implementera ICallbackEventHandler, men jag har inte riktigt hittat nån bra guide för det....Sv: Trigga postback via js?
Typ så här:
<script language="javascript">
//Trigga postback via javascript
__doPostBack('<%=btnKnappNamn.ClientID%>','');
</script>
Sv:Trigga postback via js?
Jag har nu skapat denna klass, hoppas den kan vara till nytta!
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace UIElements.Controls
{
public delegate void ValueSubmitedEventHandler(object sender, ValueSubmitedEventArgs e);
public class ImageButtonClientArgs : ImageButton, IPostBackEventHandler
{
public event ValueSubmitedEventHandler ValueSubmited;
private string returnValue;
protected override void Render(HtmlTextWriter writer)
{
//Renders the client side scripts to postback a value
ClientScriptManager clientScriptManager = Page.ClientScript;
string cbCode = clientScriptManager.GetPostBackClientHyperlink(this, ReturnValueClientScript, true);
this.OnClientClick = string.Format("{0}; return false;", cbCode);
base.Render(writer);
}
[Category("Appearance"), DefaultValue("this.src")]
public string ReturnValueClientScript
{
get
{
return returnValue;
}
set
{
returnValue = value;
}
}
protected void OnValueSubmited(object sender, ValueSubmitedEventArgs e)
{
if(ValueSubmited != null)
ValueSubmited(sender, e);
}
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
OnValueSubmited(this, new ValueSubmitedEventArgs(eventArgument));
}
}
public class ValueSubmitedEventArgs : EventArgs
{
private string args;
public ValueSubmitedEventArgs(string args)
{
this.args = args;
}
public string Args
{
get { return args; }
}
}
}