Avatar billede bmdk Nybegynder
17. april 2009 - 23:57 Der er 5 kommentarer

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 :)
Avatar billede bmdk Nybegynder
18. april 2009 - 11:42 #1
anyone? :o det haster en smule hehe
Avatar billede olebole Juniormester
18. april 2009 - 14:52 #2
<ole>

Hvis dit eneste formål er at få en knap til at skifte farve, er der meget lettere måder at gøre det på - men er det, hvad du ønsker?

/mvh
</bole>
Avatar billede bmdk Nybegynder
18. april 2009 - 15:02 #3
Hey olebole og tak for svaret :)

Som jeg skrev, så ved jeg godt at der er andre måder, der er meget lettere at gøre det på. Men jeg skal have lavet en custom control extender til min eksamen i næste uge, så hvad der skal ske med knappen (eller hvad det nu måtte være) er sådan set lidt underordnet :)

Hvis du (eller nogen andre) har nogle gode tutorials til at lave en ajax control extender der fremstår som et mere anvendeligt eksempel end det jeg har, så er du/I meget velkomne til at linke til dem!
Avatar billede olebole Juniormester
18. april 2009 - 15:22 #4
Hvis du i en JavaScript kontekst kan forklare, hvad den skal kunne, så tror jeg ikke, det bliver et problem - ellers skal du måske finde en anden kategori(?)  =)
Avatar billede bmdk Nybegynder
06. november 2009 - 02:22 #5
Hey olebole,

Gammel tråd det her, fandt en løsning på det, men vil du lige smide et svar, så vi kan få den afsluttet? :)

Mvh. Bo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester