Toon posts:

[Atlas] Focus kwijt

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,

Het probleem

Ik heb een web applicatie waarbij op de pagina elke tekstbox ATLAS- enabled werkt (er gebeuren server site dingen bij ontextchanged). Dit werkt erg mooi en is voor deze applicatie erg praktisch. Nadeel is alleen dat alle tekstboxen in het updatepanel na verlies van de focus (/op de textchanged) de tab niet doorgeven (met andere woorden, de volgende tekstbox krijgt op tab geen focus).

Ook irritant, als ik een waarde aanpas en ik klik met de muis op een texstbox ergens anders op het updatepanel, dan reageert deze niet bij de eerste klik.

Stukje voorbeeldcode (aspx)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>Untitled Page</title>
</head>
<body>
    <atlas:scriptmanager id="ScriptManager" runat="server" 
        enablepartialrendering="true" />
        
    <form id="form1" runat="server">
    <div>
    <atlas:UpdatePanel ID="UpdatePanelGrid" mode=always runat=server rendermode=Block EnableViewState=true>
    <Triggers>
        <atlas:ControlEventTrigger ControlID="TextBoxEen" EventName="TextChanged" />
        <atlas:ControlEventTrigger ControlID="TextBoxTwee" EventName="TextChanged" />
    </Triggers>
    <ContentTemplate>
        <asp:Label runat=server ID="Labeltje"></asp:Label><br />
        <p></p>
        <asp:TextBox runat=server ID="TextBoxEen" AutoPostBack=true OnTextChanged="TextBoxEen_TextChanged"></asp:TextBox>
        <asp:TextBox runat=server ID="TextBoxTwee" AutoPostBack=true OnTextChanged="TextBoxTwee_TextChanged"></asp:TextBox>
    </ContentTemplate>
    </atlas:UpdatePanel>
    <p></p>
    Wat hier staat staat buiten het updatepanel
    <asp:TextBox runat=server ID="TextBoxDrie" AutoPostBack="True" OnTextChanged="TextBoxDrie_TextChanged"></asp:TextBox>
    </div>
    </form>
</body>
</html>


Stukje voorbeeldcode (code behind)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void TextBoxEen_TextChanged(object sender, EventArgs e)
    {
        Labeltje.Text = "1: " + TextBoxEen.Text;
    }
    protected void TextBoxTwee_TextChanged(object sender, EventArgs e)
    {
        Labeltje.Text = "2: " + TextBoxTwee.Text;
    }
    protected void TextBoxDrie_TextChanged(object sender, EventArgs e)
    {
        Labeltje.Text = "3: " + TextBoxDrie.Text;
    }
}


In bovenstaand voorbeeld kan je na het wijzigen van tekstbox1 dus niet met tab naar tekstbox 2. Ook als je textbox1 wijzigt en dan met de muis op textbox2 klikt gaat dit de eerste keer niet goed.

Wat heb ik al gedaan / geprobeerd

Natuurlijk met alle properties gespeeld van de updatepanel. Ik denk dat die geen verschil uit kunnen maken. Daarna heb ik een eigen behavior geschreven zelf eerst een blur en focus uitvoert, wanneer de javascript zelf een tab naar het volgende control uitvoert. Dit is leuk als iedereen altijd alleen op tab zou navigeren, maar vangt het probleem met muisklikjes niet af.

Toen nog hard doorgezocht. Er blijken meer mensen het probleem te hebben, maar niemand die echt een oplossing heeft gevonden. Raar, want volgens mij heeft AJAX dit probleem niet.

Iemand enig idee?

[ Voor 13% gewijzigd door Verwijderd op 17-07-2006 14:26 ]


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12-02 10:50

killercow

eth0

Met ajax los je het probleem gewoon zelf op, omdat je ook zelf de rest oplost.

Ajax is een techniek (de zelfde als onder atlas trouwens), en atlas is het framework waarmee je ajax gebruikt.

Het vervelende van frmeworks is dat je een laag tussen jouw en de code krijgt, die je niet/slecht kunt beinvloeden. Wat de oplossing is? tjah, wachten op een update van je framework?

jammer dat MS altijd meteen een markt bespringt, en er daana minder moeite voor doet om er ook nuttig in te blijven. aka ik hoop dat je alsnog snel een update mag verwachten.

openkat.nl al gezien?


  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Misschien helpt het om de verandering in een textbox via een timer te controleren, ipv. OnTextChanged en AutoPostBack=true. Zie voor een voorbeeld de search op www.smarx.com of http://www.smarx.com/samples/livesearch/

Verwijderd

Topicstarter
Tnx voor de oplossing, ik heb het alleen wel een klein beetje gehad met Atlas. De eerstvolgende functie was de textbox extender, deze gaf mij mooi een lijst met mogelijk in te voeren opties. Deze lijst verdwijnt alleen het merendeel van de keren dat je een item selecteerd niet meer.

Ook zorgt een selectie niet voor een textchanged event in de tekstbox. De timer i.p.v. autopostback werkt redelijk, maar heeft soms weer het nadelige effect dat je ineens ergens focus kwijtraakt. Volgens mij is dat hele atlas nog helemaal niet zo goed geimplementeerd. Ik ga dan ook maar even op zoek naar wat andere oplossingen.