SSchäfer Geschrieben 18. April 2008 Teilen Geschrieben 18. April 2008 morgen leute, ich arbeite erst sei 1 woche mit c#. ich brauche dringend eure hilfe. u zwar muss ich ein bestehendes programm bearbeiten ( in c# geschrieben u VS 2008) u habe keine ahnung, wie ich aus der bereits bestehenden Datenbank einen datensatz komplett löschen kann. habe mich auch schon durch foren u büchern gekämpft, aber das ganze führte nicht zum gewünschten erfolg. jedoch kann ich bereits templetes speichern. hier mal der code wie gefüllt wird: private void fillUsertree() { Log.InfoEnter("heidiGmbH.Psv.PasRoles.RolesForm.FillUsertree"); Cursor.Current = Cursors.WaitCursor; try { // Evtl. vorhandene Einträge löschen TreeNode userRoot = this.userTree.Nodes[0]; userRoot.Nodes.Clear(); TreeNode groupRoot = this.userTree.Nodes[1]; groupRoot.Nodes.Clear(); TreeNode templateRoot = this.userTree.Nodes[2]; templateRoot.Nodes.Clear(); // Werte neu aus der DB holen und TreeView damit füllen fillNodes(userRoot, ItemType.User); fillNodes(groupRoot, ItemType.Group); fillNodes(templateRoot, ItemType.Template); } finally { Cursor.Current = Cursors.Default; Log.InfoLeave("heidiGmbH.Psv.PASRoles.RolesForm.FillUsertree"); } } /// <summary> /// Hilfsunktion für fillUsertree(). Führt die Füllaktion für jeden Item-Type (Benutzer, Gruppe, Vorlage) aus. /// </summary> /// <param name="nodeRoot">Wurzelknoten unter den die Objekte eingefüllt werden</param> /// <param name="itemType">Benutzer, Gruppe oder Vorlage</param> private void fillNodes(TreeNode nodeRoot, ItemType itemType) { // Liste der pas.net Benutzer/Groups/Templates holen WatchedList<PASUser> userList = UserSrv.GetByTyp(itemType); // Liste sortieren userList.SortMemberName = "FullName"; userList.Sorting = heidiGmbH.Plugging.SortOrder.Ascending; userList.Sort(); foreach (PASUser user in userList) { // Angezeigt wird Nachname, Vorname. Falls diese nicht angegeben wurden wird der Windowsbenutzername oder, falls die // SID unbekannt ist, die SID selbst angezeigt. string nodeName = string.IsNullOrEmpty(user.FullName) ? ("(" + provider.Sid2Name(user.SID) + ")") : user.FullName; TreeNode node = new TreeNode(nodeName); node.Tag = user.Guid; node.ImageIndex = 4; node.SelectedImageIndex = 3; nodeRoot.Nodes.Add(node); } } u hier einmal wie ich templates hinzufüge: // Hier kann man neue Vorlagen anlegen private void toolStripButtonAddTemp_Click(object sender, EventArgs e) { AddNewTemplate(); } private void AddNewTemplate() { Inboxes frm = new Inboxes(); if (frm.ShowDialog() == DialogResult.OK) { foreach (PASUser pu in CachedTemplates) { if (pu.SID.Equals(frm.Value)) { MessageBox.Show("Vorlagename bereits vergeben: " + frm.Value, "Vergleich", MessageBoxButtons.OK, MessageBoxIcon.Warning); // Wird neu eingegeben AddNewTemplate(); } } // Benutzer "ItemType" direkt anlegen; PASUser newTemplate = PASUser.GetInstanceWithNewGuid<PASUser>(); // wird eine neue GUID erstellt newTemplate.ItemType = ItemType.Template; // Aufzählung newTemplate.SID = frm.Value; // wird angelegt newTemplate.Shortcut = frm.Value; //neues Template mit in die gecachten aufnehmen _cachedTemplates = null; UserSrv.Insert(newTemplate); fillUsertree(); //treeViewTemplates.Nodes.Add(newTemplate.Guid, newTemplate.SID); WatchedList<UserRole> currentRoles = nodes2UserRoleList(newTemplate.Guid, lastClientGuid, newTemplate); //Gibt eine Liste der zur Zeit im Fassadentreeview angehakten Rechte zurück WatchedList<String> currentRolesList = new WatchedList<String>(); u hier wie die lösch-methode bereits aussieht: private void toolStripButton1_Click_1(object sender, EventArgs e) { TemplateDelete(); } //Hier kann mann erstellte Vorlagen aus DB einzeln löschen private void TemplateDelete() { DialogResult flgResult; flgResult = MessageBox.Show("Möchten Sie wirklich löschen", "Löschen der Vorlage", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (flgResult == DialogResult.OK) { userTree.SelectedNode.Remove(); //-> wird zwar gelöscht, aber bei neustart wieder da } } hoffentlich könnt ihr mir helfen :new Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. April 2008 Teilen Geschrieben 18. April 2008 du hast eine menge irrelevanten code gepostet, gibst aber nirgendwo an, in welcher zeile du die datenbank abgreifst. userTree.SelectedNode.Remove(); //-> wird zwar gelöscht, aber bei neustart wieder da klar, dass die treenodes wieder da sind, wenn sie aus der DB wieder geholt werden, bzw. der tree refreshed wird. verbinde dich zur DB und schmeiss den korrelierenden DS raus. welcher das ist, kannst nur du wissen, wenn du die tabellenstruktur nicht preisgibst. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steuerzahler Geschrieben 5. Mai 2008 Teilen Geschrieben 5. Mai 2008 Hallo, .remove löscht immer die komplette Zeile. Somit ist kein Abgleich mit der Datenbank mehr möglich. Benutze ".delete". Somit wird die Zeile als "gelöscht" markiert. Beim nächsten DB-Abgleich (update) wird die entsprechende Zeile dann in der DB gelöscht. ... viel Glück ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.