Laden...

DataSource Objekt wechseln

Erstellt von northdrive vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.068 Views
N
northdrive Themenstarter:in
43 Beiträge seit 2006
vor 17 Jahren
DataSource Objekt wechseln

hallo,

Ich habe ein Problem mit Databindings, das mein (sehr geringes) Verständnis übersteigt.
Ich möchte ein Dataset nicht aus der DB sondern von XML laden. Das mit dem Deserialiseren klappt auch wunderbar, wie ich beim debugen sehe, aber das Datagrid zeigt die Daten aus dem Dataset nicht an ??

woran kann das liegen ??

vielen Dank Christian

L
273 Beiträge seit 2006
vor 17 Jahren

poste bitte mal den code!

P
157 Beiträge seit 2006
vor 17 Jahren

Sorry für die Frage aber Du hast zu wenig Details gepostet um genaueres zu sagen:

Hast Du die Daten aus der Datenquelle mit BoundColumn an das Grid gebunden?

N
northdrive Themenstarter:in
43 Beiträge seit 2006
vor 17 Jahren

Die Klasse Datenzugriff


public class Datenzugriff
    {
        Mydataset ds;

        public Mydataset DS
        {
            get { return ds; }
        }

        public Datenzugriff(bool xml)
        {
            if (!xml)
            {
                ds = new LagerDataSet();
                FillfromDB();
            }
            else
            {
                if (File.Exists(Application.StartupPath + @"\" + Properties.Settings.Default.dataset))
                    FillfromXML(Application.StartupPath + @"\" + Properties.Settings.Default.dataset);
            }   
        }

        public void FillfromXML(string file)
        {
            if (String.IsNullOrEmpty(file))
                return;

            
            if (File.Exists(file))
            {
                XmlSerializer ser = new XmlSerializer(typeof(Mydataset ));
                FileStream fs = new FileStream(file, FileMode.Open);

                ds = (Mydataset )ser.Deserialize(fs);
                fs.Close();
            }
            else
            {
                string zw = ShowOpenfile();
                FillfromXML(zw);
            }
        }
        
        private void FillfromDB()
        {
            new Mydataset TableAdapters.Table1TableAdapter().Fill(ds.Table1);
           
        }
        
        public void SaveXML(string file)
        {
            XmlSerializer ser0 = new XmlSerializer(typeof(Mydataset ));
            FileStream fs = new FileStream(file, FileMode.Create);
            ser0.Serialize(fs, ds);
            fs.Close();
        }


        public string ShowOpenfile()
        {
            OpenFileDialog diag = new OpenFileDialog();
            
            
            DialogResult a = diag.ShowDialog();

            if (a == DialogResult.OK)
                return diag.FileName;
            else
                return string.Empty;
        }

    }

und die Form, in der die Daten dargestellt werden sollen


Datenzugriff datenzugriff;
        public Form1()
        {
            InitializeComponent();
            Init();
        }


        private void Init()
        {
            datenzugriff = new Datenzugriff(true);
                      

        }

        private void datenLadenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            datenzugriff.FillfromXML(Application.StartupPath + @"\" + Properties.Settings.Default.dataset);
            
        }

        private void ladenVonToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string zw = datenzugriff.ShowOpenfile();
            datenzugriff.FillfromXML(zw);

        
        }

        private void datenSichernToolStripMenuItem_Click(object sender, EventArgs e)
        {
            datenzugriff.SaveXML(Application.StartupPath + @"\" + Properties.Settings.Default.dataset);
        }

        private void speichernUnterToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog fd = new SaveFileDialog();

           
            DialogResult a = fd.ShowDialog();

            if (a == DialogResult.OK)
            {
                datenzugriff.SaveXML(fd.FileName);
            }
        }

        private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

     

        


        


    }

Ich weiß das die Struktur so nicht ganz sauber ist zb.: ShowOpenFile im Datenzugriff aber es soll ja auch nur ein schneller Wurf sein . Also bitte nicht zu sehr zerrupfen 🙂

Danke north

Edit oder vergesse ich grad einfach den Grids mitzuteilen, dass sie eine neue source haben ???

P
157 Beiträge seit 2006
vor 17 Jahren

Original von northdrive
Edit oder vergesse ich grad einfach den Grids mitzuteilen, dass sie eine neue source haben ???

Sagen wir mal so, ein Datagrid sollte schon wissen welches die Daten sind die es anzeigen soll 😉

N
northdrive Themenstarter:in
43 Beiträge seit 2006
vor 17 Jahren

<wegduck>

Das Datagrid hängt an einer Bindingsource, aber wie leite ich diese Information durch ??

</wegduck>

Danke north

P
157 Beiträge seit 2006
vor 17 Jahren

Was meinst Du mit durchleiten? Wie genau sieht die Eigenschaft DataSource des Datagrids und der BindingSource bei Dir aus?