Avatar billede hald. Nybegynder
31. oktober 2004 - 18:04 Der er 31 kommentarer og
1 løsning

combobox vil ikke databinde

Hep,

Jeg har en et MEGET stort problem :o/ - jeg har lavet en klasse scorecardTabPage, der nedarver fra TabPage-klassen.
Selve objektet består af en række tekstboxe, labels,..og comboboxe.

Det er så meningen at jeg på min Form1 har tilføjet en enkelt TabControl, hvortiljeg så vil tilføje mine såkaldte "ScorecardTabPages". MEN... de combobox'e der indgår på mine Tab's vil fandme ikke "DataBind'e"..

Er der en enkelt eller to der har en ide om hvad problemet kan være ???


scorecardTabPage
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:15 #1
i må lige skrive hvis i vil se lidt kode...

Prøver lige at se om jeg på en eller anden måde kan få bikset lidt kortfattet kode ned... Men det ville være rigtig cool, hvis en af jer har tid (og lyst9 til at tage et kig på det...
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:20 #2
kom så snepnet, arne og andet godtfolk  ... jeg ved i er derude i cyberspace :o)
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 18:24 #3
jeg vil gerne se kode :D

virker string[] strings = new string[]{
                "knud",
                "bente",
                "hans"
                                          };
            comboBox1.DataSource = strings;
ikke ?
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:30 #4
hmm... prøver lige - 2 sek...

ved i hvert fald at den virker, hvis jeg tilføjer mine items manuelt, men jeg har en DataTable der skal DataBindes til.

Dvs. at der på min Form1 tilføjes f.eks. 3 scorecardTabPages, som tilføjes ved:

TabPageScorecard tab_scorekort;
tab_scorekort = new TabPageScorecard(player_id, course_id, tee);
tab_scorekort.Text = "Scorekort 1"; // fanebladets tekst

//  Tilføjer den til TabControl:
tabControl1.TabPages.Add(tab_scorekort);


...men 2 sek
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:36 #5
nope - den vil sat... heller ikke databinde på det ???!!!
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:40 #6
hvad fanden kan der være galt ???

..Prøver lige at smide lidt af min ScorecardTabPage-klasse.
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:50 #7
(Ps. undskyld sproget,...men jeg er lidt presset over at jeg ikke kan gennemskue det)
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:51 #8
Her kommer koden hvor jeg altså ikke kan databinde:


public class TabPageScorecard : TabPage
{
  int    course_id;
  string    player_tee;
  int     player_id;
  ...

  // Diverse komponenter erklæres
  private System.Windows.Forms.TabControl tabControl1;
  private System.Windows.Forms.RadioButton rbFairwayHit1;
  private System.Windows.Forms.RadioButton rbFairwayMisHøjre1;
  private System.Windows.Forms.RadioButton rbFairwayMisVentre1;
  private System.Windows.Forms.Label lblPlayerTee;
  ...
  public System.Windows.Forms.ComboBox comboHole;
  ...

  public TabPageScorecard(int player_id, int course_id, string tee)
  {
    // Required for Windows Form Designer support
    InitializeComponent();

    this.comboHole.DataSource    = Form1.oDataSet.Tables["player"];
    this.comboHole.DisplayMember    = "name";
    this.comboHole.ValueMember    = "id";


    this.player_id    = player_id;
    this.course_id    = course_id;
    this.player_tee    = tee;

    // Initialiserer player-data:  <-- Virker fint
    this.initializePlayerData(); 

    if(tableScorecardHole.Rows.Count < 1)
    {
        // Initialiserer course-data:  <-- Virker fint
        this.initializeCourseData();

        // Initialiserer hole-data:  <-- HER vil den ikke databinde
        this.initializeHoleData(); 
    }

    this.initializeGUI();

  }// TabPageScorecard


  ...en hel masse metoder der virker fint
 


  private void initializeGUI()
  {
      ...

      // comboHole
    this.comboHole.DataSource    = Form1.oDataSet.Tables["player"]; 
    this.comboHole.DisplayMember    = "name";
    this.comboHole.ValueMember    = "id";

    ... Her vil desværre så ikke tage fat i det jeg ellers så pænt beder den om :o(
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:54 #9
og det virker som sagt heller ikke, hvis jeg bare prøver at databinde:

string[] strings = new string[]{"knud", "bente", "hans"};
comboBox1.DataSource = strings;

så umiddelbart tager den slet ikke fat...
Avatar billede hald. Nybegynder
31. oktober 2004 - 18:57 #10
Det må næsten være den måde jeg tilføjer min "homemade" TabPage...
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:22 #11
Nu ved jeg godt at jeg mere eller mindre har en samtale kørende med mig selv, men jeg håber stadig på lidt hjælp fra en af jer andre C#-hajer...

Jeg tror også at jeg har fundet fejlen:
"Scorekort.TabPageScorecard' does not contain a definition for 'DataSource'"

men jeg ved ikke lige hvordan jeg lave en override-metode/attribut af DataSource ?
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:32 #12
hmm det virker fintnår jeg lavet :o (simpelt med string[])
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:32 #13
klasse der nedarver fra tabpage:
    public class Class1 : TabPage
    {
        public Class1()
        {
            //
            // TODO: Add constructor logic here
            //

            ComboBox c1 = new ComboBox();
            string[] strings = new string[]{"knud", "bente", "hans"};
            c1.DataSource = strings;

            Controls.Add(c1);
        }
    }
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:36 #14
er din Form1.oDataSet.Tables["player"];
sat op når tabpagen bliver lavet?
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:37 #15
ja det er den... og jeg kan sagtens bruge den som datasource på mine andre forms, der ikke anvender min nedarvede klasse.

men du kan fint få det til at spille ?
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:38 #16
hvis tabpagen bliver loadet i form1 constructor, skal statisk variabel:Form1.oDataSet.Tables, sættes i en statisk constructor eller initialiseres i klassen
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:39 #17
ja det virker hos mig med klassen fra (31/10-2004 19:32:43). Og med følgende kode til at bruge den:
Form1-constructor:
Class1 tabpageSovse;
            tabpageSovse = new Class1();
            tabpageSovse.Location = new System.Drawing.Point(4, 22);
            tabpageSovse.Name = "tabPage1";
            tabpageSovse.Size = new System.Drawing.Size(224, 206);
            tabpageSovse.TabIndex = 0;
            tabpageSovse.Text = "tabPage1";
            tabControl1.Controls.Add(tabpageSovse);
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:41 #18
virker det heller ikke hvis du :
this.comboHole.DataSource    = Form1.oDataSet.Tables["player"];
return; //<----indsæt return her
this.comboHole.DisplayMember    = "name";

for at udelukke at der er problemer i den følgende kode
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:42 #19
Virker det også når du anvender din klasse som tab på en anden form. F.eks:

public class Form1: System.Windows.Forms.Form
{
        public Form1()
        {
           
            Class1 tab = new Class1();
            TabControl tabControl1;
            this.tabControl1.TabPages.Add(tab1);
            ...


kan du så stadig databinde ?
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:42 #20
jeg forstår det som: comboboxen er tom, er det rigtigt forstået ?
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:44 #21
prøver lige dit forslag
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:45 #22
det virker også på en anden form... det jeg har..
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:45 #23
yes,...kan gpdt se at jge glemte at databinde... ups :o)
der skal selvfølgelig være angivet datasource etc...
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 19:52 #24
virkder det nu?
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:54 #25
øjeblik.. så er jeg der
Avatar billede hald. Nybegynder
31. oktober 2004 - 19:57 #26
Får det godt nok også til at funge' når jeg laver dit eksempel..
hmm.. hvad pokker kan det så være i min kode ?? hmmm...
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 20:00 #27
jeg kan ikke lige se hva' der er galt. virker databindingen når du erstatter constructor'en i din tabpage:

public TabPageScorecard(int player_id, int course_id, string tee)
  {
    // Required for Windows Form Designer support
    InitializeComponent();
    string[] strings = new string[]{"knud", "bente", "hans"};
    this.comboHole.DataSource    = strings;
  }
Avatar billede sovsekoder Nybegynder
31. oktober 2004 - 20:03 #28
hvis ikke det virker, må det næste forsøg være - at erstatte constructor med:
public TabPageScorecard(int player_id, int course_id, string tee)
  {
    // Required for Windows Form Designer support
    this.comboHole = new ComboBox();
    string[] strings = new string[]{"knud", "bente", "hans"};
    this.comboHole.DataSource    = strings;
    this.Controls.Add(this.comboHole );
   
  }
Avatar billede hald. Nybegynder
31. oktober 2004 - 20:07 #29
Det er lige det jeg er igang med :o) ...det vare lige et øjeblik, så er jeg der.

Du skal forresten have tak fordi du gider at hjælpe
Avatar billede hald. Nybegynder
31. oktober 2004 - 21:19 #30
jaa... det tog jo lidt længere tid. sorry

men jeg tror at jeg så småt er ved at have løst problemet. Grunden var selvfølgelig at jeg (den store klaphat som jeg nu engang kan være) havde lavet et TabPage-objekt, som jeg så indsatte mine Panels på...

//this.tabPlayer.Controls.Add(this.panelPlayer);
//this.tabPlayer.Controls.Add(this.panelHole);
//this.tabPlayer.Controls.Add(this.panelStat);

...og så lavede en Controls.Add(tabPlayer);

nu skal jeg bare finde ud af hvordan jeg får tilføjet minde panels til ét overordnet et, som jeg så kan tilføje ved "Controls.Add(mainPanel);" ... men det virker ikke rigtigt !!
Avatar billede hald. Nybegynder
31. oktober 2004 - 22:01 #31
...Efter et par forsøg, lykkedes det mig at overtale min TabPage til at gøre som jeg ville ;o)

Det spiller... så jeg takker mange gange for hjælpen

smidder du lige et svar
Avatar billede sovsekoder Nybegynder
01. november 2004 - 08:55 #32
svar
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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