Ich bin gerade dabei eine Gräberverwaltung zu schreiben und hab leider das Problem, dass neue Datensätze über den Dialog scheinbar eingelegt, aber nicht in die Datenbank zurückgeschrieben werden.
BTW: wir haben es hier mit Schlüsseln zu tun wie, es in dem Beitrag beschrieben ist.
Hier mal der Code:
Könnte mir dazu jemand bitte einen Tipp zu Lösung geben?
Dann noch die Frage -> ist es notwendig, dass der DataTableAdapter auf dem Objekt Form platziert wird oder genügt auch die Übergabe per Konstruktor?
Danke vorab
BTW: wir haben es hier mit Schlüsseln zu tun wie, es in dem Beitrag beschrieben ist.
Hier mal der Code:
C#-Quellcode
- namespace Fried.Frames
- {
- /// <summary>
- /// Eigenes MDI-Form
- /// </summary>
- public partial class DefaultMDI : Form
- {
- private string blobkey = "";
- /// <summary>
- /// Dem Hauptcontainer werden benutzerspezifische Steuerelemente zugewiesen und beim Laden gefüllt
- /// </summary>
- /// <param name="mdiEnum"></param>
- private MDIType mdiEnum;
- public TableLayoutPanel Table { get; set; }
- public ItemOverview ItemOverview { get; private set; }
- public UserControl TreeView { get; private set; }
- public UserControl ItemDetail { get; private set; }
- public BindingSource Source { get; private set; }
- HoefeTableAdapter taHoefe;
- DataSet DynamicDataset;
- /// <summary>
- /// Anhand des ENUM-Wertes wird ermittelt, welches MDI erzeugt werden soll
- /// </summary>
- /// <param name="mdiEnum"></param>
- public DefaultMDI(MDIType mdiEnum)
- {
- InitializeComponent();
- this.mdiEnum = mdiEnum;
- Table = tableLayoutPanel1;
- DynamicDataset = slData;
- switch (mdiEnum)
- {
- case MDIType.Artikel:
- ArtikelTableAdapter taArtikel = new ArtikelTableAdapter();
- taArtikel.Fill(slData.Artikel);
- break;
- case MDIType.Kunden:
- KundenTableAdapter taKunde = new KundenTableAdapter();
- taKunde.Fill(slData.Kunden);
- break;
- case MDIType.Verträge:
- DataSource.SLDataTableAdapters.VerträgeTableAdapter taVerträge = new DataSource.SLDataTableAdapters.VerträgeTableAdapter();
- taVerträge.Fill(slData.Verträge);
- break;
- case MDIType.Hoefe:
- taHoefe = new HoefeTableAdapter();
- taHoefe.Fill(slFriedData.Hoefe);
- DynamicDataset = slFriedData;
- break;
- default:
- break;
- }
- Source = new BindingSource(DynamicDataset, mdiEnum.ToString());
- txtNummer.DataBindings.Add("Text", Source, "Nummer");
- }
- /// <summary>
- /// In Eigenschaften von dieser Form funktioniert der Double Buffer nicht
- /// deshalb wird es manuell eingestellt
- /// Durch den Double Buffer werden die Fenster geschmeidiger geöffnet und es beseitig den Flickering
- /// </summary>
- protected override CreateParams CreateParams
- {
- get
- {
- CreateParams handleparam = base.CreateParams;
- handleparam.ExStyle |= 0x02000000;
- return handleparam;
- }
- }
- /// <summary>
- /// Ist ein Suchfeld im MDI-Form
- /// </summary>
- /// <param name="itemOverview"></param>
- public void SetItemOverview(ItemOverview itemOverview)
- {
- ItemOverview = itemOverview;
- Table.Controls.Add(itemOverview, 0, 1);
- flowLayoutPanel1.BackColor = Color.White;
- }
- /// <summary>
- /// Erzeugung einer TreeViews im MDI-Form
- /// </summary>
- /// <param name="treeView"></param>
- public void SetTreeView(UserControl treeView)
- {
- TreeView = treeView;
- Control[] controls = ItemOverview.Controls.Find("panelTreeView", true);
- if (controls[0] is Panel)
- ((Panel)controls[0]).Controls.Add(TreeView);
- flowLayoutPanel1.BackColor = Color.Transparent;
- }
- /// <summary>
- /// Genauere Informationen über das ausgewählte Objekt aus dem Suchfeld und aus dem TreeView
- /// </summary>
- /// <param name="itemDetail"></param>
- public void SetItemDetail(UserControl itemDetail)
- {
- if (itemDetail == null)
- return;
- if (ItemDetail != null)
- Table.Controls.Remove(ItemDetail);
- ItemDetail = itemDetail;
- Table.Controls.Add(ItemDetail, 1, 1);
- }
- /// <summary>
- /// Setzt das Icon für das MDI Fenster
- /// </summary>
- /// <param name="icon"></param>
- public void SetIcon(Icon icon)
- {
- Icon = icon;
- }
- /// <summary>
- /// Öffnet den Dialog der Warenwirtschaft
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnSLOpenData_Click(object sender, EventArgs e)
- {
- if (StartApplication.fncWawiLogin())
- {
- string referenz = txtNummer.Text;
- BlobkeyObject blobkeyObject = BlobkeyList.GetType(mdiEnum.ToString());
- if (referenz == null || referenz == "" || referenz.Length == 0)
- {
- MessageBox.Show("Der ausgewählte Wert ist ungültig oder exisitert nicht" + "\r" + blobkeyObject.mdi, "Fehler bei Übergabe", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- else
- {
- StartApplication.oWawi.EditData(blobkeyObject.blobkey, referenz);
- }
- }
- }
- #region Blobkey
- /// <summary>
- /// Der für die COM-Schnittstelle erwartete Blobkey
- /// </summary>
- /// <param name="Blobkey"></param>
- public void SLBlobkey(string Blobkey)
- {
- if (Blobkey.Length > 1)
- {
- MessageBox.Show("Der erwartete Wert Blobkey enthält nicht den Wert 1", "Fehler bei Übergabe", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- else
- {
- blobkey = Blobkey;
- }
- }
- #endregion
- private void DefaultMDI_Load(object sender, EventArgs e)
- {
- bindingNavigator1.BindingSource = Source;
- bindingNavigator2.BindingSource = Source;
- // wird immer ausgeführt
- try
- {
- toolStripTextBox1.TextBox.DataBindings.Add("Text", Source, "AngelegtAm");
- }
- catch (Exception)
- {
- }
- }
- /// <summary>
- /// Speichert die neuen oder geänderten Datensätze
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnSaveDataSource_Click(object sender, EventArgs e)
- {
- taHoefe.Update(DynamicDataset);
- }
- }
- }
Könnte mir dazu jemand bitte einen Tipp zu Lösung geben?
Dann noch die Frage -> ist es notwendig, dass der DataTableAdapter auf dem Objekt Form platziert wird oder genügt auch die Übergabe per Konstruktor?
Danke vorab