Toon posts:

[ASP.NET/C#] Textboxen tijdens runtime vullen

Pagina: 1
Acties:
  • 422 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi, ik heb een aantal textboxen (txtThuisploeg1...txtThuisploeg8, txtUitploeg1..txtUitploeg8 etc.)
Deze wil ik vullen tijdensruntime. Er moet dan gekeken worden naar welke datum geselecteerd is in een dropdown list.

Ik kan natuurlijk heel simpel alle data met de betreffende datum ophalen en dan al die textboxen vullen.
Maar volgens mij moet het ook sneller kunnen, daarom heb ik de textboxen nagenoeg hetzelfde genoemd.

Ik dacht eerst iets van dit:

C#:
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
        VoorspellingenTableAdapter voorspellingenAdapter = new VoorspellingenTableAdapter();
        ChampionsLeagueDataSet.VoorspellingenDataTable voorspellingen = voorspellingenAdapter.GetVoorspellingenaByDeelnemerIDANDDatum((int)Session["DeelnemerID"], DateTime.Parse(ddDatum.SelectedValue)); 
        int i = 1;
        foreach (ChampionsLeagueDataSet.VoorspellingenRow voorspelling in voorspellingen)
        {
            string sThuisploeg = "txtThuisploeg" + i.ToString();
            Control cThuisploeg = FindControl(sThuisploeg);
            TextBox tThuisploeg = (TextBox)cThuisploeg;
            tThuisploeg.Text = voorspelling.thuisploegNaam;

            string sUitploeg = "txtUitploeg" + i.ToString();
            TextBox cTUitploeg = (TextBox)FindControl(sUitploeg);
            cTUitploeg.Text = voorspelling.uitploegNaam;

            string sScoreThuisploeg = "txtThuisploeg" + i.ToString();
            TextBox cScoreThuisploeg = (TextBox)FindControl(sScoreThuisploeg);
            cScoreThuisploeg.Text = voorspelling.thuisploegNaam;

            string sScoreUitploeg = "txtThuisploeg" + i.ToString();
            TextBox cScoreUitploeg = (TextBox)FindControl(sScoreUitploeg);
            cScoreUitploeg.Text = voorspelling.thuisploegNaam;

            i++;

        }


Alle gegevens van de desbetreffende datum worden gevuld in de datatable voorspellingen, en dan wil ik dus voor iedere rij de textboxen vullen (rij 1 alle textboxen met 1 achter de ID, rij 2 alle textboxen met 2 achter het ID etc.)
Maar met FindControl werkt het toch niet, dit blijkt niet de juiste manier te zijn. Nu is mijn vraag hoe ik dit anders moet aanpakken?
Of zou ik toch steeds iedere textbox aan moeten roepen en kan ik het dus niet simpel en kort in een foreach loopje zetten.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Hoe post je code? / Hoe gebruik je de code tag? Ik heb het nu even voor je gedaan, doe jij het de volgende keer?

Verder: neem altijd de taal/omgeving waarin je werkt op in je topictitel. Hoe verwacht je dat iemand met kennis je komt helpen als ie niet aan je titel kan zien dat het om "zijn" taal gaat? ;) Zie ook *** Over topictitels in PRG - lezen voor topic openen!!! ***. Ik weet niet zeker of het klopt, maar ik heb zelf even je titel aangepast. Als dit niet goed is maak je maar even een topic report aan met het handje boven dit topic. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
-NMe- schreef op dinsdag 05 september 2006 @ 10:08:
Hoe post je code? / Hoe gebruik je de code tag? Ik heb het nu even voor je gedaan, doe jij het de volgende keer?

Verder: neem altijd de taal/omgeving waarin je werkt op in je topictitel. Hoe verwacht je dat iemand met kennis je komt helpen als ie niet aan je titel kan zien dat het om "zijn" taal gaat? ;) Zie ook *** Over topictitels in PRG - lezen voor topic openen!!! ***. Ik weet niet zeker of het klopt, maar ik heb zelf even je titel aangepast. Als dit niet goed is maak je maar even een topic report aan met het handje boven dit topic. :)
Het klopt, sorry dat ik dit niet gedaan heb (ik wist het wel :/ )

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Gewoon de Controls collectie uitbuiten:
C#:
1
2
3
4
5
6
7
8
9
10
11
public void Fill()
{
    TextBox ctrl = null;

    for(int i = 0; i < 8; i++) {
        if(this.Controls["txtThuisPloeg" + i] != null) {
            ctrl = this.Controls["txtThuisPloeg" + i] as TextBox;
            ctrl.Text = "de tekst die je wil hebben hier";
        }
    }
}

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
Dit werkt niet want this.Controls moet een integer hebben (een index).

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Oh wacht het is ASP.Net, in forms werkt het dan weer wel.
Nou ja je kunt altijd nog de controls collection doorlopen en dan de names checken maar dat is ook niet echt optimaal.
FindControl zou echter wel gewoon moeten werken.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
Hij geeft bij mij aan als ik findcontrol doe dat de control null is.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:35
Ik denk dat FindControl gewoon op die manier werkt: de Controls collection overlopen, en de names checken...

Ff checken...
Hmm, niet dus, die accessed blijkbaar een IDictionary, waarbij de naam van de control de key is.

[ Voor 28% gewijzigd door whoami op 05-09-2006 10:51 ]

https://fgheysels.github.io/


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:23

TeeDee

CQB 241

Volgens mij moet je de code van MTWZZ nog uitbreiden met een een foreach welke eerst door de Page.Controls collection heen loopt.

Vervolgens checken of het een textbox is en dan kijken of het jouw gewenste textbox is.

Zoiets dus:
C#:
1
2
3
4
5
6
7
8
9
10
foreach (Control c in Page.Controls)
{
  for(int i = 0; i < 8; i++) { 
    if (c.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox")
          && c.ID == "txtBoxNaam"+i)
    {
      // doe je ding
    }
  }
}

[ Voor 37% gewijzigd door TeeDee op 05-09-2006 11:00 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Hoe zet ik mijn Control dan om in een textbox want ik moet dus c.Text = bladibladibla

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 30-01 15:48

Not Pingu

Dumbass ex machina

code:
1
((TextBox)c).Text = "blabla";


Overigens kan ik me niet aan de indruk onttrekken dat je volgens mij eigenlijk een datagrid wilt.

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Ik zie nu ook als ik doe single steppen dat hij maar 1 control vind, misschien komt het doordat ik met masterpages werk? Ik heb op deze pagina (voorspellingen.aspx) de terxtboxen en dergelijke in het content gedeelte geplaatst.

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Waaom gebruik je geen DataList of DataGrid i.c.m. een DataSource voor dit soort klussen?
Scheelt echt een hoop 'dom' programmeerwerk.

Eigelijk zouden je rugharen al overeind moeten gaan staan bij het denken aan 'genummerde' velden: dan ben je m.i. druk aan een inflexible oplossing aan het sleutelen, met een waarschijnlijk een hoog copy+paste gehalte en dat kaan vaak (altijd?) sllimmer / beter / netter.

En van Control een textbox maken, dat heet (type)casten:
C#:
1
2
Control someControl = ....
TextBox box = (TextBox) somsControl; //  <-- de cast

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


Verwijderd

Topicstarter
Not Pingu schreef op dinsdag 05 september 2006 @ 11:22:
code:
1
((TextBox)c).Text = "blabla";


Overigens kan ik me niet aan de indruk onttrekken dat je volgens mij eigenlijk een datagrid wilt.
Ik heb zoiets dergelijks ook met een datagrid willen proberen maar hier kwam ik ook niet echt uit.

Alle wedstrijden werden netjes uit de database gehaald en in de grid gezet, maar ik wil eigenlijk dat de grid meteen in edit mode komt. Het is eigenlijk simpel, alle wedstrijden meoten worden opgehaald en de ingelogde deelnemer moet zijn voorspelling geven en deze wordt opgeslagen in de db.

Verwijderd

Topicstarter
Ik ga nog eens klooien met een datagrid, want dat is idd een betere, nettere en makkelijkere oplossing.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 30-01 15:48

Not Pingu

Dumbass ex machina

Verwijderd schreef op dinsdag 05 september 2006 @ 11:26:

Alle wedstrijden werden netjes uit de database gehaald en in de grid gezet, maar ik wil eigenlijk dat de grid meteen in edit mode komt. Het is eigenlijk simpel, alle wedstrijden meoten worden opgehaald en de ingelogde deelnemer moet zijn voorspelling geven en deze wordt opgeslagen in de db.
Je hoeft niet perse van EditItemTemplates gebruik te maken, je kunt je textboxen en buttons ook in de gewone ItemTemplate kwijt. Daar wordt het wel een stuk langzamer op bij veel controls, want een control plaatsen kost de server meer werk dan een simpel stukje tekst.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Ik raad je aan om wat meer zelf te proberen, voordat je al je vragen hier neetzet.
Gebruik je Visual Studio? Dan kan het, zeker met ASP.net, geen kwaad om de auto-complete te gebruiken om gewoon alle properties van een control (Zoals DataGrid) een ste bekijken en je af te vragen waar ze voor zouden kunnen dienen.

Ik ben zelf 2 maanden geleden pas met ASP.Net begonnen en in het begin weet je gewoon niet waar je wat zoeken moet, maar met slim gebruik maken van autocomplete i.c.m. Google kom je echt een heel eind. :)

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


Verwijderd

Topicstarter
wat is de auto-complete?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:34

Creepy

Tactical Espionage Splatterer

Dat is nu prima op te zoeken in google en zelfs de help van Visual Studio ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ik heb al eerder geklooid met een datagrid en templates enzo. Probleem is als ik op edittemplates klik zie ik geen itemtemplate alleen EmptyDatatemplate en PagerTemplate.

[ Voor 91% gewijzigd door Verwijderd op 05-09-2006 12:03 ]


Verwijderd

Topicstarter
Ik wil enkele gegevens aan de gebruiker tonen die de gebruiker meteen kan editten. Met een formview lukt me dat prima, maar die laat slechts 1 record zien. Een datalist is weer het andere uiterste, die laat ze allemaal zien. Maar ik wil gewoon dat de gebruiker er als het ware doorheen kan bladeren. Dit kan met een Gridview, maar hier zie ik geen ItemTemplate. Alleen een PagerTemplate en een EmptyDataTableTemplate.
Hoe krijg ik het nu voor elkaar?

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:26
Pak de MSDN er maar eens bij, daar staat heel veel informatie over dit soort zaken in. Bijvoorbeeld:
Modifying Data in a GridView Web Server Control
Wat lukt er bij jouw niet? Wat heb je al uit geprogrammeerd?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit kan best nog verder in \[ASP.NET/C#] Textboxen tijdens runtime vullen

Merge: [ASP.NET C#] ItemTemplate met Gridview >> \[ASP.NET/C#] Textboxen tijdens runtime vullen

Tevens wil ik de topicstarter verzoeken wat meer z'n best te doen. We zijn geen persoonlijke helpdesk hier en willen wel wat eigen inzet zien ;)

[ Voor 34% gewijzigd door RobIII op 05-09-2006 17:01 ]

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


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:34

gorgi_19

Kruimeltjes zijn weer op :9

:?
Waarom zou FindControl niet werken? Je moet wel in de juiste control zoeken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:23

TeeDee

CQB 241

Heb de startpost nog eens gelezen en 'het werkt' niet is een vrij nietszeggende 'foutmelding' inderdaad. FindControl zou gewoon moeten werken met
C#:
1
FindControl("txtBox"+i);

Misschien gaat er iets anders wel fout. Een IsPostBack niet afgevangen misschien, zodat alles weer netjes leeg is.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ik heb het nu na lang klooien met een gridview opgelost. Bedankt voor de reacties en ik zal idd nu toch wat meer zlef op onderzoek gaan.
Pagina: 1