[ASP4.0] ListBox SelectedIndexChanged ClientSide afhandelen*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 12:23
Ik heb een listbox in mijn formulier welke serverside gevuld wordt met data. (ter info: selectionmode > single)
Als de gebruiker een van de items aanklik, wil ik wat additionele info van de keuze tonen maar zonder een postback te doen. Ik wil alles dus ClientSide afhandelen verder.

Hoe kan ik nu het OnSelectedIndexChanged event op de client afhandelen? Ik heb uiteraard autopostback op false gezet.

Ik dacht simpelweg een javascript functie aan te roepen door onderstaande code te gebruiken, maar dat pikt hij niet.
HTML:
1
2
<asp:ListBox ID="ListBox1" runat="server" SelectionMode="Single" AutoPostBack="false" OnSelectedIndexChanged="javascript:ListBox1_Change()">
</asp:ListBox>

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 12:23
Heb even met JQuery gepuzzeld en kwam op het volgende uit.

JavaScript:
1
2
3
4
5
$(document).ready(function () { 
    $('#<%= ListBox1.ClientID %>').change(function()
            { alert($('#<%= ListBox1.ClientID %>').val()); }
        );
    });


Het werkt. Maar is dit de juiste methode?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 12:27

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Welke versie van ASP.net gebruik je? Kijk hier/hier/hier eens als je 4.0 gebruikt.

[ Voor 35% gewijzigd door RobIII op 01-06-2011 15:21 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 12:23
ja ik gebruik 4.0. Wat je nu aangeeft zal ik eens bekijken.
Maar als we naast het ID eens kijken naar het koppelen van het event. Dat is wel de juiste methode?

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 12:23
Wil ik ook meteen even inspringen op het volgende issue.

De additionele info (zie 1e post) wil ik clientside oproepen. Ik zat eraan te denken om hiervoor een key-value pair te gebruiken.
De values van de items in de listbox zijn namelijk ID's. Dit ID kan ik als Key gebruiken.
Als de key voorkomt in de key-value pair, kan ik de value van de key-value gebruiken als additionele info.

Maar ik weet niet of er iets bestaat als een keyvalue pair in javascript.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wil je er ff op letten dat je niet dubbele posts achter elkaar plaatst binnen 24 uur? Je kan dan de Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/edit.gif knop gebruiken :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 12:27

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

pdebie schreef op woensdag 01 juni 2011 @ 15:36:
Maar ik weet niet of er iets bestaat als een keyvalue pair in javascript.
Rocket science...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 12:23
key-value pair 'probleem' opgelost met een array in de vorm van:

JavaScript:
1
var ListRemarks = {"1" : "opmerking bij 1", "4" : "opmerking bij 4" };


Deze wordt vanuit de code-behind gevuld.

Dit levert uiteindelijk het volgende op:
JavaScript:
1
2
3
4
5
6
7
8
9
$(document).ready(function () {
            var ListRemarks = <%= Remarks %>;
            $('#<%= ListBox1.ClientID %>').change(function () { 
                if(ListRemarks[$('#<%= ListBox1.ClientID %>').val()] != undefined)
                    $('#<%= lbl1.ClientID %>').text(ListRemarks[$('#<%= ListBox1.ClientID %>').val()]);                    
                else
                    $('#<%= lbl1.ClientID %>').text('');
            } );
        });


Nu enkel nog kijken naar de oplossing van RobIII met betrekking tot de ID's van de controls binnen de javascript. :)
Pagina: 1