Hjælp til custom AJAX control extender
Hey eksperter,Jeg sidder i øjeblikket og roder med at lave min egen AJAX control extender til ASP.NET og har egentlig fået det til at virke.
Det jeg gerne vil med control extenderen er, at en knap skal blive en anden farve når man har trykket på den. Det virker som sagt også, men den forbliver ikke den farve efter man har trykket på den :/ så bliver den normal igen lige efter. Jeg har prøvet at smide et Updatepanel omkring den, men det virkede heller ikke - går ud fra det er i mit JS jeg skal skrive noget ekstra før det kan lade sig gøre?
I får lige lidt kode at kigge på:
AjaxControlExtender1.js:
--------------------------
Type.registerNamespace('AjaxControlExtender1');
AjaxControlExtender1.AjaxControlExtender1Behavior = function(element) {
AjaxControlExtender1.AjaxControlExtender1Behavior.initializeBase(this, [element]);
this._color = null;
}
AjaxControlExtender1.AjaxControlExtender1Behavior.prototype = {
initialize: function() {
AjaxControlExtender1.AjaxControlExtender1Behavior.callBaseMethod(this, 'initialize');
var e = this.get_element();
var d = Function.createDelegate(this, this._onClick);
$addHandler(e, "click", d);
},
_onClick: function(sender, e) {
var e = this.get_element();
e.style.border = "20x solid black";
},
dispose: function() {
AjaxControlExtender1.AjaxControlExtender1Behavior.callBaseMethod(this, 'dispose');
},
get_Color: function() {
return this._color;
},
set_Color: function(value) {
this._color = value;
}
}
AjaxControlExtender1.AjaxControlExtender1Behavior.registerClass('AjaxControlExtender1.AjaxControlExtender1Behavior', AjaxControlToolkit.BehaviorBase);
AjaxControlExtender.cs:
---------------------------
[assembly: System.Web.UI.WebResource("AjaxControlExtender1.AjaxControlExtender1Behavior.js", "text/javascript")]
namespace AjaxControlExtender1
{
[Designer(typeof(AjaxControlExtender1Designer))]
[ClientScriptResource("AjaxControlExtender1.AjaxControlExtender1Behavior", "AjaxControlExtender1.AjaxControlExtender1Behavior.js")]
[TargetControlType(typeof(Button))]
public class AjaxControlExtender1Extender : ExtenderControlBase
{
// TODO: Add your property accessors here.
//
private string _color = "Color";
[ExtenderControlProperty]
public string Color
{
get { return GetPropertyStringValue(_color); }
set { SetPropertyStringValue(_color, value); }
}
}
}
Default.aspx:
----------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="AjaxControlExtender1" Namespace="AjaxControlExtender1" TagPrefix="changeColor" %>
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="sm1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
<asp:Button ID="btn" runat="server" Text="En knap" />
<changeColor:AjaxControlExtender1Extender ID="extChangeColor" runat="server" TargetControlID="btn"></shrinkcontrol:AjaxControlExtender1Extender>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
Jeg ved godt at det måske er meget, meget simpelt og man sikkert kan gøre det meget smartere på andre måder, men dette er blot et lille eksempel på, hvordan man kan skrive sin egen control extender :) så det skal egentlig ikke bruges til noget, som sådan.
Håber I har tid til at kigge på det.
På forhånd tak for hjælpen :)
