Avatar billede oddi Nybegynder
31. januar 2010 - 17:22 Der er 2 kommentarer og
1 løsning

sende DataSet til object

Hej Eksperter.

I C++ ville jeg loese mit dillema med pointere, men i C# er dette ikke muligt... Saa jeg ville spoerge jer om hvordan jeg skal loese mit problem.

Jeg har et DataSet object som jeg sender som et argument til en klasse:

lysing ly = new lysing(ref set);

lysing er en dialog (Form) og hvis brugeren trykker paa "OK" knappen skal der fyldes i DataSet.

Min constructor i lysing:

        private DataSet dataSet;
        private DataSet temp;

        public lysing(ref DataSet set)
        {
            InitializeComponent();
            this.AcceptButton = ilagi;
            this.CancelButton = haettaVid;
            dataSet = set;
            set = temp;
        }

Handle for "Ok - click":

        private void ilagi_Click(object sender, EventArgs e)
        {
            DataRow row;

            row = dataSet.Tables["Listi"].NewRow();
            row["Heiti"] = heitiLabel.Text;
            row["Concord"] = concordLabel.Text.ToString();
            row["Pontun"] = pontunLabel.Text.ToString();
            row["Magn"] = magnLabel.Text.ToString();

            dataSet.Tables["Listi"].Rows.Add(row);
            temp = dataSet;

            this.Close();
        }

Det ser ud til at mit DataSet (set) ikke bliver fyldt og at dataSet kun bliver fyldt. Hvordan goer jeg dette korrekt?

Mvh
Oddi
Avatar billede bvli Praktikant
31. januar 2010 - 17:59 #1
Din kode virker lidt forvirrende på mig. Du bruger en ref i din constructor - hvorfor det?

Kan på din 'set' og 'dataSet' ikke bare pege på det samme dataset?

Men du kunne evt. lave lidt anderledes. F.eks:

[..]
DataSet set = new DataSet();
[populate dataset]
using (Lysing lysing = new Lysing(set)) {
  if (lysing.ShowDialog(this) == DialogResult.OK) {
    set = lysing.DataSet;
  }
}
[..]
class Lysing : Form {
  DataSet set;
  public Lysing(DataSet set) {
    this.set = set;
    Button b = new Button();
    b.Text = "test";
    b.Click += b_Click;
    Controls.Add(b);
  }
 
  Public DataSet DataSet {
    get {return set;}
  }

  private void b_Click(object sender, EventArgs e) {
    //populate dit DataSet;
  }

}
Avatar billede oddi Nybegynder
31. januar 2010 - 21:50 #2
Tak for hjælpen, jeg fandt dog fejlen et andet sted.

Jeg kom til at lave:

dataGridView1.DataSource = set

istedet for:

dataGridView1.DataSource = set.Tables["Listi"];

Smid et svar bvli
Avatar billede bvli Praktikant
01. februar 2010 - 00:58 #3
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