Zojuist kwam ik hiervoor een oplossing tegen. Je maakt een custom control die overerft van System.Web.UI.WebControls.LinkButton. Deze custom control voegt een stukje javascript toe aan je pagina, waarmee de DefaultButton wél werkt!
using System;
using System.Web.UI;
namespace BISBV.GUI.TemplateControls
{
public class BISBVLinkButton : System.Web.UI.WebControls.LinkButton
{
private const string _addClickScript = "AddDefaultButtonClickFn('{0}');";
private const string _addClickFunctionScript =
@"function AddDefaultButtonClickFn(id) {{
var b = document.getElementById(id);
if (b && typeof(b.click) == 'undefined') b.click = function() {{
var result = true; if (b.onclick) result = b.onclick();
if (typeof(result) == 'undefined' || result) {{ eval(b.getAttribute('href')); }}
}}}};";
protected override void OnLoad(System.EventArgs e)
{
// Registreer de JavaScript-functie voor de DefaultButton.
ScriptManager.RegisterStartupScript(this, this.GetType(), "addClickFunctionScript", _addClickFunctionScript, true);
// Voeg op deze LinkButton een StartupScript toe.
ScriptManager.RegisterStartupScript(
this,
this.GetType(),
"click_" + ClientID,
string.Format(_addClickScript, ClientID),
true);
base.OnLoad(e);
}
}
}
Omdat we ASP.NET AJAX gebruiken worden de stukjes JavaScript geregistreerd via de ScriptManager. Als je geen AJAX gebruikt vervang je dit voor 'ClientScript'.
Geen opmerkingen:
Een reactie posten