Hi,
in meiner Software hat folgendes einen Bug verursacht:
SqlConnection conn = new SqlConnection("...");
SqlCommand cmd = new SqlCommand("...", conn);
SqlDataReader r = cmd.ExecuteReader();
// Bis zur naechsten Zeile steht hier nur wenig Code, der schnell
// abgearbeitet wird.
r.Close(); // wirft *manchmal* eine Exception
conn.Close();
Die Message der Exception war ca. "Timout vor Beenden der Operation abgelaufen, oder der Server reagiert nicht mehr".
Dann habe ich einen Blick in die MSDN geworfen und anhand der Code-Beispiele erfahren, dass es nicht noetig ist, den reader manuell zu schliessen. Was ich dann gemacht habe: das Schliessen des readers auskommentiert, und es lief.
Aber warum? Der reader bietet schliesslich eine Close-Methode an. Hat jemand eine Idee, was hier schief gelaufen ist? Schliesst man einen SqlDataReader vielleicht nicht, wenn er vom SqlCommand erzeugt wird?
michme schrieb:
Probier mal dies:
dataGridView1.FirstDisplayedCell = dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[0];
Zumindest nach dem Füllen des DataGridView zeig es die letzte Zeile an. Ob es wärend des Füllens auch schon scrollt hab ich jetzt nicht überprüft.
Vielen Dank! Das hat geklappt.
Was soll man dir den mehr sagen.
In VS ab 2003 ist das Compact Framework drin. Damit kann Programme schreiben welche auf Smartphones, PDA,MDA laufen.
Eben dort wo Windows Mobile läuft.
Näheres findest Du unter goggle.
Suchwort
Compact Framnework oder Windows Mobile
oder ähnliches.
throw;
wirft die Exception weiter.
throw ex;
wirft eine neue Exception.
Das wird vorallem dann interessant wenn einem der Stacktrace interessiert. (Bei throw ex; wird der alte Stacktrace weggeworfen, da man die exception ja gefangen hat, ergo behandelt hat. Bei throw; wird der stacktrace aber behalten, da die exception noch nicht behandelt wurde). Generell macht es deshalb keinen Sinn throw ex zu schreiben. Wenn man eine neue Exception werfen will, dann wohl eher gleich einen neuen typen:
throw new SomeException(ex);
Dafuer hat man ja Exception Chaining.
hallo!
ich habe zur zeit meine diplomarbeit zu erstellen. meine aufgabe ist es einen supplierplan auf einer webseite anzuzeigen. ich kann dabei über eine andere seite die reihenfolge der spalten, weöche spalten angezeigt werden sollen, nach was sortiert werden soll und die spaltenbreite festlegen.
ich haben nun einen gridview erstellt und ihn wie follt befüllt
OdbcConnection myConnection = new OdbcConnection(database_connection);
// get the adapter where the conditions are true
OdbcDataAdapter myAdapter = new OdbcDataAdapter(
"SELECT " + database_query + " FROM substitution WHERE " +
"date >= " + actual_day + " AND date <= " + End_Date +
" AND lesson >= " + beginn_lesson + " AND lesson <= " + end_lesson +
" ORDER BY " + primary_order + "," + secondary_order, myConnection);
myAdapter.Fill(dt); //DataSet dt füllen mit den Daten des Adapters
for (int i = 0; i < array_query_header.Length; i++)
{
for (int j = 0; j < array_cell_header.Length; j++)
{
if (array_query_header[i] == array_cell_header[j])
{
dt.Columns[i].ColumnName = array_query_header[i].ToString();
}
}
}
gvTheory.DataSource = dt;
gvTheory.DataBind();
doch das mit der spaltenbreite haut noch nicht hin und ich weiß nicht wie is es machen soll. da die eigenschaft beim gridview autogeneratecollumn auf ture ist. wenn ich sie auf false setze, wird mir der gridview nicht angezeigt. kann mir jemand einen tipp geben wie es gehen könnte.
lg nesa
Du verwechselst das C#-using mit dem C++-typedef. Was Du willst, ist ein eigener Datentyp, und genau das würde ich Dir für Deine Zwecke auch empfehlen.
Ja, genau das habe ich gemacht. In C# eine einfache Form, ein Textfeld rein, einen Button daneben. In's Textfelld kann man Python-Code eingeben und sobald ich auf den Knopf drücke wird er ausgeführt.
Leg einfach eine IronPython.Hosting.PythonEngine an, und dann kannst du mit Evalueate oder Execute die Dinge machen, die du willst.
Im beiligenden Tutorial ist doch sogar ein ganzer Abschnitt zum Thema "Embedding IronPython". Kanns sein, dass du verdammt faul bist?
ich unterstütze auch reactions posting.
scheint mir hier das effektivste zu sein. hängt aber davon ab ob man die programme welche die dateien evtl. auch noch nutzen bzw. schreiben auch ändern kann.
Danke michme, ich habe nach langem stöbern im Internet tatsächlich jemanden gefunden, der genau das, was ich gesucht habe, als Erweiterung der .Net Toolbox geschrieben hat. Hier der Link für alle, die auch mal einzelne Tabs disablen wollen und das ganze nicht selbst implementieren möchten:
http://www.softwarebrigade.com/projects/CSharp/tools/downloads.php?&fcaccion=upcounter&fcfile=downloads%2FSoftwarebrgade_Controls-v1.0.4-fw2_0.zip
Funktioniert super!
Grüße
Samo
Hi all,
ich weiß nicht genau weiter. Ich hol mir aus der Datenbank z.B. Daten für Autos. Recht genommen sind die noch sehr klein aber was ist wenn die Datenbank mal recht groß sein sollte. Ist es dann besser einmal nur auf die Datenbank zuzugreifen und die Daten in Objekte zu schreiben oder ist es besser immer wieder und nur dann grad die gewünschten Daten zu holen?
Grüß
Old.school
Ja, wenn ich wüsste wie...
Also, es geht um ein Programm von sourceforge, da möchte ich gerne folgendes ändern:
- der selektierte Knoten soll die Farbe der Priorität haben, und nicht von der Windows-Farbe für Markierungen übermalt werden
- der selektierte Knoten soll fett angezeigt werden
Zu finden ist der Code-Teil in der "Mainform.cs" vom hier erhältlichen Projekt:
http://sourceforge.net/projects/todo-manager-cs/
Ich vermute ich muss hier was ändern, aber weiß nicht wie.
Der source ist ja mit dem download verfügbar, vielleicht kann mir jemand helfen?
private void tree_AfterSelect(object sender, TreeViewEventArgs e)
{
try
{
if (reactToControlEvents)
{
toDoManager.CurrentToDoItem = (ToDoItem)e.Node.Tag;
////descriptionTextBox.Focus(); // doesn't work... ???
}
}
catch (Exception ex)
{
ShowErrorMessage(ex.Message);
}
}
Gruß,
nibbler
Es ist vielleicht nicht sauber und sollte nicht benutzt werden aber es ist eine Lösung die für seine Anwendung ausreichend sein kann. Das Property ist auch nur Null, wenn das Objekt nicht existiert und das lässt sich als unwahrscheinlich deklarieren, abgesehen davon dass er die Box in XAML löscht.
Am sichersten ist es natürlich, wenn er das IF Statement einfach ausschreibt:
if (checkBox1.IsChecked == true)
Hätte er ein bisschen rumprobiert (oder die Doku gelesen) wäre er auch drauf gekommen.
Guten Tag,
ich verwende bei meinem Programm gebufferte Items, um die Perfomance beim Füllen der Listviews (Klasse abgeleitet von System.Windows.Forms.ListView) zu verbessern.
Dazu benötige ich die Information, wieviele Items vollständig dargestellt werden können (so dass keine Scrollbar erscheint).
Die Listviews haben unterschiedliche größen und verwenden verschiedene Schriftgrößen, so dass eine Festlegung zur Designzeit nicht in Frage kommt.
Weiß jemand Rat?
Das Problem besteht immer noch. Da Du nur ein Update-Kommando ausführst ist die Transaktion überflüssig, bzw. bringt nix ausser Zeitverlust.
Um eine Parallelitätsverletzung noch mal genau zu skizzieren:
time | task 1 | task 2
----------------------------
1 | lesen | --
2 | -- | lesen
3 | schreiben | --
4 | -- | schreiben
Du versuchst zum Zeitpunkt 4 zu schreiben, dabei ist es völlig egal ob Du den Zeitpunkt 4 in eine Transaktion packst oder nicht, bringt nix. Wenn Du's mit Transaktionen lösen willst, dann packe für task 2 den Zeitpunkt 2 + 4 in eine Transaktion, für task 1 den Zeitpunkt 1 + 3 in eine Transaktion.
Hallo,
ich habe eine Lösung im Netz gefunden.
Unter dem link http://www.codeguru.com/csharp/csharp/cs_misc/com/article.php/c6747/ gibt es einen Artikel, der es gut erklärt.
Bei mir hat es anschließend geklappt (nachdem ich mal wieder festgestellt habe, dass VB6 long nicht gleich VB.NET long ist ).
Gruß
Holger