Laden...
Avatar #avatar-1903.gif
.unreal myCSharp.de - Member
Sexbombenentschärfer Nähe Zürich Dabei seit 26.11.2004 563 Beiträge
Benutzerbeschreibung

Forenbeiträge von .unreal Ingesamt 563 Beiträge

30.06.2006 - 14:45 Uhr

Wenn ich jetzt userB löschen will, müsste ich eigentlich die entsprechende Zeile in der DB über die id ansprechen. Momentan lösche ich aber die Reihe im Dataset und führe dataAdapter.Update(...) aus.

Wie löschst du die DataRow im DataSet? Wie sieht dein UpdateCommand von dem dataAdapter aus? Du kannst einem SqlCommand als Parameter der name der SourceColumn angeben (in deinem Falle "id"), dann löscht der das auch korrekt. So wie ich das jetzt verstehe, löschst du den Datensatz anhand des Indexes, keine gute Idee.

Poste doch mal den Code des UpdateCommands.

.unreal

30.06.2006 - 14:29 Uhr

Beim DataGridView wirst du mit den beiden Events CellFormatting und CellParsing glücklich. Bei Bindings, mit denen du die Binding-Klasse verwendest, kannst du die Events Binding.Format resp. Binding.Parse verwenden.

edit:
Kleiner Tipp: Wenn du sowieso den CurrencyManager benötigst, dann verwende die BindingSource-Klasse, ist viel konfortabler 🙂

Gruss,
.unreal

30.06.2006 - 14:26 Uhr

Du hast bestimmt ein zwei Methoden, welche Rekursiv die Daten aus der Klasse Datensource auslieset, und die Nodes hinzufügt. Mach in deiner Datensource-Klasse einen Event, sobald sich die Daten ändern. Im Form registrierst du dich bei diesem Event und rufst die Methoden auf, welche das Treeview beglücken.

.unreal

29.06.2006 - 23:03 Uhr

sorry, ich habe mich unklar ausgedrückt.

Poste doch mal etwas Code. Headerfarben usw. sollten da nichts beeinflussen!

.unreal

edit: ist checked wirklich der spaltenname?

29.06.2006 - 17:55 Uhr

wenn du dich mit mysql auskennst, dann kommst du gut voran mit mssql! War bei mir auch so, ist doch wurst ob man TOP oder LIMIT verwendet...

29.06.2006 - 13:03 Uhr

Original von sheitman
oderm uß man da bei mysqlwieder erst was ektivieren?

sollte eigentlich aktiviert sein. oft deaktivieren aber die provider diese funktionalität, da sowieso nur lokal einen zugriff möglich ist.

.unreal

29.06.2006 - 09:49 Uhr

Original von w1z4rd2003
1
2
3
4
5
6
7
1
2
3
4
...
...
...

bis zum 20. Datensatz

diese Numerierung ist unmöglich, da Zahlen doppelt vorhanden sind!

29.06.2006 - 09:48 Uhr

Wieso willst du die ersten 20 Updaten? Beschreib mal deine Absicht.

Ich versteh nicht, wie du auf diese Anforderung kommst. Was ist dein Vorhaben? Warum willst du das tun?

Eine Lösung wäre:
Zuerst mit SELECT die 20 letzten ids auslesen (SELECT TOP 20...), anschliessend update WHERE id = id1 or id = id2 usw.

.unreal

29.06.2006 - 09:44 Uhr

Warum sollte es nicht "gehen"? Man kann jedes Property binden!

29.06.2006 - 09:07 Uhr

Hast du es schon mit einem DataBinding auf die SelectedNode versucht?

29.06.2006 - 09:06 Uhr

Wenn ich dem Tablestyle allerdings die Relation als MappingName zuweisen will, wird das Style leider nciht angezeigt.

Bei der GridBoolColumn musst du den PropertyName auf das Attribut der Relation, also der Name der Column mit dem bolschen Wert setzen.

Gruss,
.unreal

28.06.2006 - 16:21 Uhr

Das Treeview mit einer Rekursion zu füllen ist in ein par wenigen Zeilen geschrieben, ich weiss aber genau, was du an DataBinding magst 🙂 Trotzdem würde ich auf eine 3rd-Party-TreeViewWithDataBinding-Klasse verzichten.

.unreal

28.06.2006 - 16:14 Uhr

http://msdn2.microsoft.com/en-us/library/c12c1kx4.aspx müsste dir weiterhelfen.

Der Knackpunkt ist wohl:

The DataMember property of the second BindingSource is set to the DataRelation name. This causes the associated detail DataGridView control to display the rows of the child Orders table that correspond to the current row in the master DataGridView control.

Gruss,
.unreal

28.06.2006 - 16:03 Uhr

doch schon, wird aber sozusagen nie verwendet 🙂

28.06.2006 - 15:59 Uhr

Hallo Fanatic-Design

Nein da irrst du dich nicht! In so einem Fall könntest du ja gleich einen MySQL Server inerhalb eures Netzwerkes installieren. Denk daran, dass die Daten zum MySQL Plaintext durch die Leitung gehen.

.unreal

28.06.2006 - 15:57 Uhr

Ohne DataBinding ist das ziemlich einfach Lösbar, wo ist das Problem?

28.06.2006 - 15:39 Uhr

nur ist deine ip nicht Statisch 🙂 Und was ist, wenn die Applikation von einem anderen Computer aus benutzt wird?

Wenn du die Anwendung immer von einem Computer aus startest, aber keine statische IP hast, dann guck ma utner: http://no-ip.org

.unreal

28.06.2006 - 15:37 Uhr

Original von w1z4rd2003
mein ziel wäre es eben im load meines Fensters alle Values auszulesen.

Die hast du ja in der DataTable, warum willst du diese (nochmals)auslesen ? Die sind ja bereits "da" 🙂. Erklär uns, warum du das willst, wahrscheindlich können wir dir dann viel besser helfen, aber ein drittes mal Frage ich nicht nach.

Gruss,
.unreal

28.06.2006 - 15:28 Uhr

Denke kaum, dass der Hoster dem Server die Beine spreitzt, damit alles rein und raus kann. Aus Sicherheitstechnischen Gründen wird diese remote-Sperre nicht nur Softwaremässig abgesichert sein, sondern auch Hardware.

Guck mal bei MySQL-Front, in deinem Installationsverzeichnis liegt ne php Datei, ich glaube die heisst phpMySQL.php. MySQL Front schickt die Querys an dieses Script, welches das Query lokal auf dem Webserver ausführt und das Resultat in XML zurückschickt. Jetzt brauchst du nur noch zu wissen, wie du dieses Tunnelingscript ansprechen musst. Vieleicht gibts ne Doku, wenn nicht such mal im Internet, vieleicht gabs jemand, der eine solche Schnittstelle programmiert hat. Wenn nicht, dann bleibt dir nur noch eine möglichkeit: schau dir den Code des PHP Scriptes an 🙂

Ich brauche auch eine solche Schnittstelle, aus Zeitgründen konnte ich allerdings mich noch nicht damit beschäftigen. Mein Projekt wäre sicher Open-Source.

Gruss,
.unreal

28.06.2006 - 15:18 Uhr

Muss es ein TreeView sein? Kannst doch auch einfach eine Combobox für die Kategorienauswahl, und ein DataGridview für die Darstellung der Childs verwenden?

.unreal

28.06.2006 - 15:14 Uhr

guck mal bei www.codeproject.com, ich glaube ich hab dort mal eine gesehen, müsste aber selber suchen. Das überlass ich nun aber dir =)

.unreal

28.06.2006 - 15:11 Uhr

Original von JunkyXL

foreach (string value in <ComboBox>.ValueMember)  
{  
    ...  
}  

Du hast so ein schönes Intellisense, schau dir die Möglichkeiten an.
Jetzt hast du das Value im Zugriff und kannst es ausgeben.

ValueMember wird für das DataBinding benötigt und hat überhaupt nichts mit dem Value eines Items zu tun.

Aber da ich bis jetzt nur die Methode SelectedValue gefunden habe frage ich nach.

SelectedValue ist ein Property und keine Methode

Warum willst du die Values über die ComboBox durchiterieren? Ich bin nicht gerade der ComboBox auskenner, aber ich wage es mal zu behaupten, dass man das gar nicht braucht. Grundsätzlich tut man solche Interaktionen auf der Datenebene. Wie hast du die Daten an die Combobox gebunden? Schau dir mal die Klasse BindingSource an -> "Encapsulates the data source for a form.", mit der kannst du suchen und grübeln nach Lust und Laune 🙂.

Gruss,
.unreal

28.06.2006 - 14:30 Uhr

edit: sorry, hab nicht richtig gelesen =)

.unreal

p.s TreeView unterstützt kein DataBinding, müsstest auf ein 3rd Party Komponente zurückgreifen.

28.06.2006 - 14:19 Uhr

quakenet.de ist zwar eher für gamer, aber diese Server besitzen schon einige Programmierchannels, wie #php.de #c++.de #java.de #java #c usw.!

.unreal

28.06.2006 - 14:17 Uhr

Was soll denn diese Methode machen? Verstehe nicht warum du eine Methode willst, für sowas sind doch Collections?

.unreal

28.06.2006 - 14:15 Uhr

Die Antwort steht im von Herbivore geposteten Thread!

.unreal

26.06.2006 - 16:34 Uhr

count(b.id)
und nicht das GROUP BY (K.id) vergessen

.unreal

26.06.2006 - 12:26 Uhr

Finde ich eigentlich ne super Sache mit den 64kb Demos, wenn man genug Zeit hat 🙂 Aber .NET ist nicht wirklich für sowas geeignet.

23.06.2006 - 09:53 Uhr

Original von FZelle
Viel besser wären natürlich Parameter

Noch besser wären DataAdapters =) Wenn man schon mit einem DataGrid/DataGridView arbeitet sind die DataAdapters am effizientisten.

.unreal

22.06.2006 - 09:38 Uhr

Hi Tomtom62

Was meinst du genau mit "speichern"? Grundsätzlich gibt es zwei verschiedene Synchronisierungen: Von der Benutzereingabe zur DataTable, und von der DataTable in die Datenbank.

Wenn du Eingaben Validieren willst, dann Verwende die Validate Methoden des jeweiligen Controls.

Die SqlDataAdapterklasse synchronisiert deine DataTable mit einer Datenbank. Diese Klasse stellt folgende Events zu Verfügung: RowUpdated, RowUpdating und FillError.

Gruss,
.unreal

21.06.2006 - 00:02 Uhr

Wenn du eine Childdatensätze anzeigst, musst du irgendwo definiert haben, wer der Vater ist und bindest diese eigenschaft an deine Textbox. Ich habe dir einen Artikel gepostet, da steht wie man das ohne Designer macht, sollte eigentli ableitbar sein? Ich kenn mich mit dem Designer nicht aus, sorry.

Ansonsten poste doch mal etwas code.

.unreal

20.06.2006 - 23:54 Uhr

ich zitiere herbivore von "Scrollen im Datagridview"

gedacht oder ausprobiert?

.unreal

20.06.2006 - 23:48 Uhr

Original von herbivore
Aber im Ernst: Die andere Hälfte gucke ich in der Doku nach.

du bringst mich immer wieder zum schmunzeln 😃

20.06.2006 - 16:36 Uhr

sorry, bei den Typed DataSets kann ich dir nicht direkt helfen, ich lass immer die Finger vom Drag&Drop.

Ich nehme aber trotzdem an, dass du ein BindingSource hast? Mit BindingSource.Find("nummer", txtNummer.Text) kommst du an den Index ran, und mit BindingSource.Position setztst du den "Cursor".

.unreal

20.06.2006 - 16:03 Uhr

Was hast du an das DataGridView gebindet? Am besten wäre ein BindingSource, da müsstest du nur BindingSource.EndCurrentEdit() aufrufen!

Ansonsten musst du an den CurrencyManager ran:

 ((CurrencyManager).BindingContext[_dataGridView, "Tablename"]).EndCurrentEdit();

Im CellValidating Event überprüfst du, ob die Eingabe des Benutzers in Ordnung ist. Ich mache im CellEndEdit-Event folgendes:

_dataGridView.Rows[e.rowIndex].ErrorText = String.Empty;

So kann man das Editieren/Hinzufügen mit der Escapetaste abbrechen, und die Fehlermeldung kommt nimmer. Ansonsten musst du das Form.AutoValidate wie bereits erwähnt anpassen.

Gruss,
.unreal

20.06.2006 - 08:51 Uhr

vieleicht ist MaxLength auf 1000 das was du suchst?

.unreal

19.06.2006 - 11:33 Uhr

Bei der MSDN suche gebe ich "display data datagridview" ein, der dritte Treffer: "Displaying Data in the Windows Forms DataGridView Control". Dort findet man viele Howtos, Walktrhougs und weitere Links.

Ich helfe gerne, solange ich sehe, dass der Fragende auch etwas gemacht hat.

.unreal

19.06.2006 - 10:49 Uhr

Können ja, tun denke ich nicht! Warum guckst du nicht selbst in die MSDN? Da hats hunderte von Beispielen über die DataGridView.

Gruss,
.unreal

19.06.2006 - 09:59 Uhr

Ich habe es über das BindingSource gelöst:


        If _bsResources.Current.Row.RowState = Data.DataRowState.Detached Then
            .... überprüfen und so
        End If

Lustigerweise ist dgvResources.Rows(e.RowIndex).IsNewRow immer False, weil vor dem Validieren gleich ne neue Row im DataGridView erzeugt wird, da sehe ich den Sinn nicht ganz dahinter!

Scheint mir etwas komisch, dass man solche umwege gehen muss, wäre darum trotzdem noch froh, wenn jemand seine Ideen posten würde.

.unreal

19.06.2006 - 09:27 Uhr

Hallo Community

Ich habe ein Problem mit dem CellValidating Event des DataGridView. Der Code ist leider in VB.NET, ich poste diesen trotzdem hier, obwohl mycsharp eine C# Seite ist, da dieses Forum einfach nur super ist 🙂


    Private Sub dgvResources_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgvResources.CellValidating
        If (dgvResources.Columns(e.ColumnIndex).Name = "resource") Then
            If (_bsResources.Find("name", e.FormattedValue) > -1) Then
                dgvResources.Rows(e.RowIndex).ErrorText = "Diese Anwendung ist bereits vorhanden."
                e.Cancel = True
            Else
                dgvResources.Rows(e.RowIndex).ErrorText = String.Empty
                e.Cancel = False
            End If
        End If
    End Sub

Bei diesem Code kriege ich eine InvalidOperationException mit dem Text "Operation did not succeed because the program cannot commit or quit a cell value change."

Warum lässt sich sich einen Cell-Value nicht verändern?! Sobald der ausgewählte Wert nicht vorhanden ist, wird e.Cancel auf false gesetzt. Falls ESC gedrückt wird, habe ich im CellEndEdit event den error der row auf "" gesetzt.

Der Benutzer soll über eine ComboBox aus einem Applikationsppol eineauslesen können, allerdings darf jede nur einmal hinzugefügt werden. Ich dachte ich packe diese Validierung in den CellValidating Event. Ist das der falsche Weg?

Gruss,
.unreal

19.06.2006 - 09:18 Uhr

XXXDataAdapter.Update() guckt selber, obs nun ein Insert/Update/Delete ist, brauchst lediglich die verschiedenen Commands zuzuweisen, und anschliessend die Update() Methode aufrufen.

Brauchst dich also nicht darum zu kümmern, wenn du dies aber trotzdem willst, dann guck dir mal die RowState der DataRows von DataSet.GetChanges() an!

.unreal

18.06.2006 - 13:40 Uhr

Hi HarriHarri

Hast du denn nirgends eine Masterview, wo der Autor ausgelesen wird?

Wenn du nur eine Liste mit allen Büchern hast, dann musst du den Autorennamen im SQL-Statement auch abfragen, diesen Bindest du aber nicht an das DataGridView sondern nur an die Textbox.

Gruss,
.unreal

15.06.2006 - 16:06 Uhr
((CurrencyManager)BindingContext[myDataSet, "DataTablename"]).EndCurrentEdit()

je nach Binding musst du mittels

BindingContext[myDataSet.Table["Tablename"]]

an den CurrencyManager rankommen. Ich kapier den unterschied leider auch noch nicht ganz 😦, aber die beiden CurrencyManager sind nicht gleich.

Gruss,
.unreal

15.06.2006 - 12:37 Uhr

Lösung:
Papersource-Klasse --> QueryPageSettings Event vom PrintDocument.

Gruss,
.unreal

14.06.2006 - 15:50 Uhr

Hallo

Per PrintDocument wird gedruckt. Ist es möglich, das Fach des Druckers programmatisch (sprich ohne Printer-Dialog) auszuwählen, damit automatisch von einem nicht Standardfach gedruckt wird?

In PrinterSettings Klasse habe ich nichts gefunden.

Gruss,
.unreal

13.06.2006 - 14:40 Uhr

Kleiner Tipp am Rande: wenn du VS 2005 verwendest, und nen EventHandler nicht auswenidg kennst, warte nach dem += auf die IntelliSense oder drück tab.

.unreal

13.06.2006 - 13:58 Uhr

Kommt ganz drauf an, wo du den neuen Datensatz anlegen willst. Ist es z.B. vom Form aus, würde ich das DataView verwenden, da dann z.B. kein CurrencyManager.Refresh() verwendet werden muss. Um Daten aus einer DB in diese DataTabe zu füllen käme einen DataAdapter.Fill() zum einsatz.

09.06.2006 - 12:41 Uhr

Wenn eine ADS vorhanden ist, sollte man mit dem Windows-Benutzer arbeiten.

07.06.2006 - 11:55 Uhr

ersetzen kannst du nur, wenn die länge des Ersatzes identisch zur Länge des zu ersetzenden ist.

versteh ich nicht: String.Replace("kurz", "jetzt isses aber gaaanz doll lang")