Nun habe ich gesehen, dass ich das ganze ja über die Attribute in der Klasse steuern kann.
[Browsable(false)]
public int Id { get; set; }
[DisplayName("Anderer Text")]
public string Text { get; set; }
-Steuert man das grundsätzlich über die Klasse?
-Wenn ich eine Eigenschaft
[Browsable(false)]
setzte, gibt es dann bei der tatsächlichen Anzeige der Daten noch die Möglichkeit, es z.B. für eine View anzeigen zu lassen?
-Wird die Vorgehensweise oben überhaupt so eingesetzt?
Danke mal für Eure Tipps! Habe versucht alles entsprechend umzusetzen (100 durch 100m ersetzt, keine Rundun beim Abschlag bzw. erst am Ende runden) - dennoch erhalte ich nicht das, was ich gerne möchte.
ich weiß, zu dem Thema gibt es bereits viele Einträge und ich habe auch bereits viel probiert. Leider kommt ich aber nicht auf mein gewünschtes Ergebnis.
Im ersten Beispiel runde ich auf 0,25, ergibt dann 5,75, was passt.
Im zweiten Beispiel runde ich auf 0,5, da erhalte ich immer 5,5. Warum wird hier nicht aufgerundet auf 5,7?
public static decimal RabattiertenPreisBerechnen(decimal preis, decimal rabatt)
{
decimal abschlag = Math.Round(preis * (rabatt / 100), 2, MidpointRounding.ToEven);
decimal rabattpreis = preis - abschlag;
// Um auf 0,25 zu runden, funktioniert folgende Zeile zu meinem Beispiel = 5,75.
//rabattpreis = Math.Round(rabattpreis * 4, MidpointRounding.ToEven) / 4;
// Um auf 0,5 zu runden => erhalte ich in beiden Fällen 5,5.
rabattpreis = Math.Round(rabattpreis * 2, MidpointRounding.ToEven) / 2;
//rabattpreis = Math.Round(rabattpreis * 2, MidpointRounding.AwayFromZero) / 2;
//rabattpreis = Math.Round(rabattpreis, MidpointRounding.AwayFromZero); => 5,67
//rabattpreis = Math.Round(rabattpreis, MidpointRounding.ToEven); => 6
return rabattpreis;
}
Ich habe zwei DataTables welche ich über Merge zusammen führe.
Binde ich diese Daten wie oben direkt an eine DataGridView werden in allen Spalten Werte angezeigt.
Verwende ich zum Anzeigen allerdings eine DataView (wie oben auskommentiert) enthalten manche Spalten keine Werte mehr.
Was kann die Ursache sein? Bzw. in welche Richtung muss ich suchen, um das Problem zu lösen?
DataView wäre mir von der Anbindung lieber, da ich dann einfacher eine Filterfunktion umsetzen kann.
Danke für Deine Antwort. So etwas in die Richtung habe ich befürchtet.
Das Problem ist, dass das Projekt mit .NET 4.0 und VS2010 erstellt wurde und auch so läuft.
Darin wurde auch das Entity Framework verwendet.
Aber einfach auf eine neuere VS Version upgraden geht ja leider nicht so einfach. Daher
war eine Überlegung, die Datenbankabfragen nicht mehr über das EF zu machen, sondern direkt
per SQL. Dat hat auch bei Abfragen zu einer deutichen Verbesserung der Performance geführt.
So könnte dann auch einfacher auf eine neuere Version des Visual Studio umgestellt werden.
Hab ich sonst noch eine Möglichkeit, unter meinen gegeben Umständen ein Objekt <T>
und/oder eine List<T> zurückgeben zu lassen?
ich habe zwei Listen.
Eine Liste mit allen Produktnummern und eine weitere mit nur ein paar Nummern.
Nun möchte ich gerne, wenn ich beide Listen miteinander vergleiche, dass ich nur die Werte aus der ersten Liste erhalten, welche NICHT in der zweiten Liste vorkommen.
Weshalb würde bei diesem try/catch kein Fehler angezeigt werden, wenn ich den Debugger verwende?
Ein ResetBindings hilft auch nicht.
Das DataSource der BindingSource habe ich eine BindingList<T>.
Die Nummer ist hier statsächlich ein String, da auch Zeichen in der Nummer enthalten sein können. (z.B. KEN-002)
ich habe eine Datenbankabfrage erstellt.
Eine Eigenschaft (Version), die ich nun gerne füllen möchte, sollte ich dazu aus einer ANDEREN Datenbank abrufen.
Wie kann ich dies entsprechend einbauen?
var query = from a in ctx.tblartikel
select new Artikel
{
ArtikelNr = a.Nummer
ArtikelName = a.Bezeichnung
// hier => Version = DB.VersionAbrufen(a.Nummer)
};
DataTable tbl = IEnumerableToDataTable.ToDataTable(query.ToList());
return tbl;
public static string VersionAbrufen(string sNummer)
{
try
{
using (xxx ctx = new xxx())
{
var query = "SELECT MAX(version) AS Version " +
"FROM dataparts p " +
"WHERE p.number= " + sNummer +
" AND p.type = 'a'";
return ctx.ExecuteStoreQuery<String>(query).FirstOrDefault();
}
}
catch (Exception ex)
{
return string.Empty;
}
}
Ich habe nun nochmals einiges geändert. Leider erhalte ich weiterhin eine StackOverflowException.
Leider komme ich nicht weiter.
Was mache ich falsch??
Hier meine Klasse:
public class p_ident
{
public string ident;
public string ben1;
}
public class c_ident : p_ident
{
public string pos_nr;
public string count;
}
danke für deine Antwort.
In meiner DataTable filtere ich auf die "7500" (Auswahl des Nutzers). Dann sollte es doch passen, welche Einträge durchlaufen werden?
Zitat
außerdem bei der Zuweisung zu myNode.Name ebenso.
Dein Teil verstehe ich leider nicht, was du damit meinst.
ich stehe gerade echt auf dem Schlauch, wie ich mein TreeView (rekursiv?) befüllt bekomme.
Die Datenstruktur in meiner DB-Tabelle sieht so aus:
Spalten
parent_nr
parent_version
child_nr
child_version
count
Dies sieht dann etwa so aus: "7500";"a";"1200";"0";1
"7500";"a";"2200";"0";2
"7500";"a";"2250";"0";1
"1200";"0";"1100";"0";1
"1200";"0";"1300";"0";1
"1300";"0";"1000";"0";1
Nun hätte ich gerne, dass es im TreeView korrekt aufgelistet wird. Zum Anzeigen wird nur ein "main"-Parent benötigt, da der Nutzer dies zuvor auswählen soll. Wie im oben Beispiel wäre das dann die 7500.
Somit sollte es wie folgt aussehen
Leider erhalte ich mit meinem Versuch immer eine StackOverflowException
TreeNode parentNode = new TreeNode("7500");
nummer = "7500";
Auf meiner Hauptform habe ich bei der Eigenschaft MainMenuStrip "keine" ausgewählt - da ich dies auch nicht möchte.
Setze ich diese Eigenschaft allerdings auf meine Menüleiste, die auch das Item Fenster enthält, so werden die Child Forms korrekt in der WindowList aufgeführt.
Gibt es da einen Workaround, damit die WindowList dennoch angezeigt wird?
Guten Morgen,
auf meiner Hauptform habe ich einen MenuStrip eingefügt, mit einem Item "Fenster".
Dem MenuStrip habe ich bei der Eigenschaft "MdiWindowListItem" wiederum fensterToolStripMenuItem zugewiesen.
Starte ich nun das Projekt und öffne Forms, so werden diese nicht in der Liste angezeigt.
Hier mal noch das Öffnen einer Form:
Hallo,
ich mache über eine TextBox einen Filter auf eine DataView. Aktuell werden nur Daten abgefragt, die vom Typ string sind.
Nun würde ich aber gerne noch einen weiteren Wert in den Filter aufnehmen. Dieser ist vom Typ Integer.
Bei der Abfrage direkt auf die DB klappt des auch. Bei meinem Filter allerdings nicht. Dort erhalte ich die Meldung Undefinierter Funktionsaufruf CAST().
Hier mal noch mein Code:
dv.RowFilter = string.Format("Name LIKE '%{0}%' OR Strasse LIKE '%{0}%' OR Ort LIKE '%{0}%' OR Land LIKE '%{0}%' OR CAST(Personennummer as CHAR) LIKE '%{0}%'", textBox1.Text);
Wie kann ich sowohl die String-Werte als auch den Integer in den Filter mit aufnehmen?
Unser Projekt soll nun in einen Container eingebettet werden.
Ein Test war in einem MDI-Container, beim anderen wurde ein Panel als Container verwendet.
Hat (eigentlich) auch beides geklappt.
Nun haben wir aber - bei beiden Varianten - festegestellt, dass die Darstellung nicht immer korrekt ist.
Z.B. wird eine DataGridView aufgerufen, bei dieser bestimmte Zellen abhängig vom Datum, farblich markiert werden.
Die farbliche Darstellung wird aber in beiden Fällen nicht dargestellt. Beim "normalen" Aufruf der Form allerdings schon.
An was liegt das? Muss an der Aufrufreihenfolge etwas geändert werden?
Und welche Variante des Containers ist zu bevorzugen? Die von VS vorgeschlagene Variante über IsMdiContainer oder über das Panel?
Hallo, gibt es eine Möglichkeit, die Hintergrundfarbe beim Hover Event zu ändern? Bzw auch das komplette Menü, das aufklappt, sollte dann ebenfalls eine andere Farbe bekommen. Wo werden diese Eigenschaften festgelegt?
Entschuldigung! Mit "es geht nicht" wollte ich sagen, dass einfach nichts passiert, d.h. wie wenn es keinen Filter gibt. Die Daten werden nicht gefiltert.
Hallo,
leider klappt das Filtern meiner BindingSource nicht und ich weiß leider nicht, wie ich das Problem lösen kann.
Ich möchte gerne, beim Eingabe in die Textbox entsprechend filtern. Ich hoffe, es kann mir jemand helfen?! Danke!
private void SetDataSource()
{
List<Inventar> list = D_Inventur.ListeInventarBestandAbrufen(i_Id);
m_BindingList = new BindingList<Inventar>(list);
m_BindingSource.DataSource = m_BindingList;
}
private void LoadDataGridView()
{
if (m_BindingSource == null) { return; }
if (dgInventar.DataSource != null)
{
dgInventar.DataSource = null;
dgInventar.Rows.Clear();
dgInventar.Columns.Clear();
}
dgInventar.AutoGenerateColumns = true;
dgInventar.DataSource = m_BindingSource;
}
private void tbFilterArtikelnummer_TextChanged(object sender, EventArgs e)
{
m_BindingSource.Filter = string.Empty;
string sReplaced = EscapeLikeValues.EscapeLikeValue(tbFilterArtikelnummer.Text);
m_BindingSource.Filter = string.Format("(Nummer LIKE '%{0}%' OR Bezeichnung LIKE '%{0}%')", sReplaced);
}
string sQuery = @SELECT a.artikelnummer, a.Bezeichnung_deutsch, lv.lagerplatznummer, l.anzahljeeinheit, l.einheit
FROM tblartikel a
LEFT JOIN tbl_lager lv ON a.artikelnummer = lv.artikelnummer
LEFT JOIN tbllagerplaetze l ON lv.lagerplatznummer = l.lagerplatzid
LEFT JOIN tbllagergrunddaten i ON a.artikelnummer= i.artikelnummer
WHERE a.bestandsgefuehrt = true";
var result = ctx.ExecuteStoreQuery<Lager>(sQuery).ToList();
DataTable tbl = IEnumerableToDataTable.ToDataTable(result);
Nun habe ich das Problem, dass es Werte gibt, die in der Tabelle tbllagergrundlagen nicht enthalten sind und somit bei der Abfrage NULL ergeben.
Dies kann ich so allerdings nicht als DataTable zurückgeben, da ich eine Exception wegen der NULL-Werte erhalte.
Wie muss ich entsprechend die Abfrage anpassen, damit die Abfrage ausgeführt wird bzw. die Daten dann in der DataGridView angezeigt werden?