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
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?
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 ???
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 😉
<wegduck>
Das Datagrid hängt an einer Bindingsource, aber wie leite ich diese Information durch ??
</wegduck>
Danke north
Was meinst Du mit durchleiten? Wie genau sieht die Eigenschaft DataSource des Datagrids und der BindingSource bei Dir aus?