Laden...

Forenbeiträge von marco.b Ingesamt 303 Beiträge

29.11.2007 - 11:58 Uhr

Wenn der IIS heruntergefahren wird, oder wenn du die Website an sich herunterfährst oder neustartest (das geht mittels IIS).

Es ist dennoch nicht ratsam, Daten im Application-Objekt dauerhaft zu speichern. Dein Server muss nur mal abstürzen, sei es durch einen Angriff oder durch Selbstverschulden. Oder dein Serverprovider spielt ein Update ein und startet den Server neu - in diesem Falle wären deine Daten verloren.

Was willst du denn überhaupt speichern?

29.11.2007 - 11:00 Uhr

Hi,

ich denke die Antwort hast du dir ja teilweise schon selbst gegeben:

Nur wenn ich nun die Seite schließe bleibt mir der Wert des zuletzt eingeloggten Users in der DB stehen. Somit kann jemand wenn er die Page das nächstemal öffnet auf jede Seite zugreifen die, die Berechtigung des zuletzt eingeloggten Users unterstützt!

Du wirst diesen An- und Abmeldevorgang mittels Datenbank nicht sauber hinbekommen, das ist technisch gesehen mit den typischen Boardmitteln der Webprogrammierung einfach nicht machbar.

Und abgesehen davon: Wie verhält sich die Webseite, wenn 5 oder 10 oder gar 100 Besucher gleichzeitig angemeldet sind? So wie ich dein System verstanden habe, würden sich die Anmeldeinformationen gegenseitig überschreiben.

Und das wohl wichtigste Argument meinerseits ist, dass du das Rad eigentlich neu erfindest. ASP.NET hat nun schon einige Jahre auf dem Buckel - das bedeutet dass die meisten Komponenten schon jahrelang im Einsatz sind, erprobt und getestet von millionen Menschen, und auch von großen Firmen wie Dell.
Das bedeutet, dass du als Softwareentwicklerin davon ausgehen kannst, dass alle Boardmittel die du von ASP.NET nutzt auch funktionieren.
Deine eigene Anmeldekomponente jedoch wurde vermutlich von niemandem bisher getestet. Sie hat sich im Einsatz nicht bewiesen denn du bist gerade noch bei der Entwicklung.

Und jetzt eine Frage an dich, was ist besser?

  1. Eine wohlgetestete, sichere und einfach zu nutzende ASP.NET Komponente für die Anmeldung verwenden.
    oder
  2. Eine eigene Lösung mit viel Aufwand zu schreiben von der man glaubt, dass sie funktioniert, man sich aber nicht sicher ist, ob sie später auch wirklich tauglich für den Realworld-Einsatz ist.

Verstehe mich aber bitte nicht falsch. Ich wollte damit nicht sagen, dass du nicht fähig bist eine eigene Anmeldekomponente zu entwerfen. Sicher schaffst du das, und wenn du noch ein wenig daran feilst und dein Konzept überdenkst wird sie bestimmt auch gut. Aber ich denke dass generell bewährte Komponenten vorzuziehen sind.

29.11.2007 - 08:56 Uhr

@Golo: Ja die alten LucasArts-Adventures sind einfach nur geil. Bin auch Fan davon. 👍

Ansonsten gehöre ich auch eher zu den Leuten, die nicht viel spielen. Wenn, dann mal ein kurzes rundenbasiertes Spiel das schnell vorbei ist (Worms, Rocketz, o.Ä.), aber für das Dauerspielen mehrmals in der Woche fehlt mir einfach die Lust. Um ehrlich zu sein habe ich mehr Spaß an der Entwicklung von Homepages / Anwendungen als an irgendeinem Spiel. Da bin ich im Forum aber sicher nicht der einzige, dem das so geht.

29.11.2007 - 08:44 Uhr

was könnte denn ein grund sein? kann ich das irgend wie beeinflussen?

Es gibt in ASP.NET eben diverse Mittel zum persistieren von Daten. Für alle gängigen Anwendungsfälle hast du in der Regel mindestens eine hauseigene Möglichkeit zur Speicherung, und in manchen Fällen ist es nunmal nötig, Daten solange am Leben zu halten wie die Webanwendung lebt, und bei einem Neustart neu zu initialisieren. Wenn du Daten darüber hinaus speichern willst dann ist Application eben nicht das Richtige für dich in diesem Fall. Dann musst du sie eben mittels Datenbank, Serialisierung o.Ä. speichern und zu einem späteren Zeitpunkt wieder laden.

29.11.2007 - 08:40 Uhr

Okay herbivore ich entschuldige mich, wenn es so ausgesehen hat als würde ich dich mehrfach korrigieren, das war nicht meine Absicht. Ich hoffe du verzeihst mir.

28.11.2007 - 22:19 Uhr

Dieses System dass du da ausgearbeitet hast ist ziemlich unstabil, und wird dir später beim Realworld-Einsatz Probleme machen.

Loginsitzungen solltest du aus der Datenbank raushalten, und das Schließen des Browsers kannst du nicht sicher abfangen. Es geht per JavaScript, aber JavaScript kann clientseitig deaktiviert werden.
Glaube mir, was du willst geht viel einfacher und sicherer. Schau' dir mal die Authentication-Konzepte von ASP.NET an.

28.11.2007 - 22:10 Uhr

Es gibt im Übrigen noch die Eigenschaft Button.PostBackUrl

28.11.2007 - 22:04 Uhr

Hallo,

das Application-Objekt ist anwendungsglobal, wird von allen Seitenbesuchern geteilt und bleibt in der Tat so lange am Leben, wie es die Website tut.

Das Session-Objekt ist benutzergebunden, und separat für jeden Benutzer verwaltet. Es lebt über mehrere Seitenbesuche hinweg, bis eine bestimmte Zeit der Inaktivität des Besuchers das Objekt zerstört (Timeout).

28.11.2007 - 21:57 Uhr

Original von herbivore

Wenn es bei dir länger gedauert hat, tut es mir leid. Du solltest das aber bei anderen nicht immer und immer wieder in Abrede stellen.

herbivore

Schön, dass du dich weiterhin angesprochen fühlst Herbivore, aber eigentlich war die Aussage weder auf dich gemünzt noch auf sonst Jemanden. Die allgemeine Frage war, wie lange man gebraucht hat, um C# / .NET zu lernen. Und ich wollte der Diskussion lediglich hinzufügen, dass es Dinge gibt, die man nur durch Anwendung in der Praxis lernt. Wieso fühlst du dich jetzt angegriffen? Habe ich deine Aussage irgendwie bestritten?

"Wenn es bei dir länger gedauert hat, tut es mir leid" - ganz schön niveaulose Aussage. Wieso würdigst du als Moderator / Administrator andere herab?

Edit: Ok ich habe gesehen, wieso du dich vermutlich angesprochen gefühlt hast. Ich habe deine Aussage zitiert. Das tat ich aber nur, weil ich zu diesem Satz noch etwas hinzufügen wollte, nicht um dich zu verbessern, zu kritisieren oder dir anderweitig zu widersprechen. Ich entschuldige mich für das Missverständnis. Dein letztes Posting fand ich dennoch nicht so prickelnd und doch ein wenig hart.

28.11.2007 - 19:46 Uhr

Deshalb kann man aus der Aussage verschiedener Personen "ich habe x Monate gebraucht, um die für mich relevanten Klassen zu kennen" durchaus ein verallgemeinernden Schluss ziehen.

Die Frage ist aber, was es bedeutet, eine Klasse zu kennen. Es gibt einen klaffenden Unterschied zwischen dem Wissen um die Bedeutung und Verwendung der Klasse, und zwischen dem Kennen sämtlicher Eigenheiten, Tücken und Kniffe einer Klasse.

Ein einfaches Beispiel sind die Datenzugriffsklassen in ADO.NET. Kenne ich die Best-Practices, oder kann ich einfach nur ein SqlCommand zusammen schustern, das anfällig für Sql-Injections ist und darüber hinaus noch schlechte Performance aufweist?

Ich muss mit einer Klasse nicht gut umgehen können um sie zu kennen. Und das sind die Dinge die meiner Meinung nach mit Erfahrung kommen durch praktische Anwendung. Das ist nicht in n Monaten lernbar, zumindest in vielen Fällen nicht.

28.11.2007 - 19:34 Uhr

Hi,

Peter, schön dass wir mal wieder einer Meinung sind 😉
Das Session_End-Event wird ihr in diesem Falle nichts bringen, da es nicht mit dem Schließen der Website einher geht.

@KANU: Es gibt eine einfache Möglichkeit, eine Variable für jeden Benutzer separat zu verwalten und diese über mehrere Seitenaufrufe hinweg zu speichern: Das Benutzen von Sessions.
Das Session-Objekt steht dir auf jeder Seite via Page.Session zur Verfügung. Über einen assoziativen Index kannst du Werte anlegen oder abrufen:


// Anlegen
Page.Session["MeineVariable"] = 5;

// Abrufen
(int)Page.Session["MeineVariable"];

// Prüfen, ob Variable bereits existiert
bool exists = Page.Session["MeineVariable"]!=null;

Doch ich habe das Gefühl, du machst dir hier mehr Arbeit als es eigentlich nötig ist. ASP.NET bietet Möglichkeiten, den Anmeldevorgang von Benutzern zu automatisieren. Dabei kannst du sehr einfach auch alle Seiten vor unangemeldeten Benutzern schützen lassen.
Google dir einfach mal einen nach dem Stichwort "FormsAuthentication".

28.11.2007 - 15:37 Uhr

Zum Thema Custom Paging gibt es auch auf ASP.NET noch etwas:

http://asp.net/learn/data-access/#pagingsorting

28.11.2007 - 14:52 Uhr

Hallo herbivore,

Nach ca. drei Monaten kannte ich alle der wichtigsten Klassen und Methoden des Frameworks

Das Framework besteht nicht nur aus Konsolen- und Formsanwendungen. Und nur darauf habe ich mich bezogen. Dass du in der Lage bist binnen drei Monaten die Basisklassen zu lernen, und auch schon tiefer in einem Bereich wie WinForms eingetaucht bist, daran habe ich nie gezweifelt.

Wenn man die zitierte Aussage aber liest könnte man als Anfänger meinen, nach 3 Monaten ist man in allen Bereichen von .NET einigermaßen fitt.

28.11.2007 - 14:01 Uhr

So wie ich sie verstanden habe, soll auf das Schließen der Webanwendung per Browser reagiert werden. Da bringt die globale Klasse auch nichts.

28.11.2007 - 13:39 Uhr

Hallo KANU,

deine Fragen wären im Forum Webtechnologien wesentlich besser aufgehoben.

  1. Ein solches Ereignis gibt es nicht, da das Schließen eines Fensters clientseitig abläuft, und ASP.NET serverseitig davon nichts mitbekommt. Du könntest das höchstens per JavaScript abfangen.

  2. Was meinst du mit unterschiedliche Webformen? Was genau möchtest du ansprechen?

  3. http://www.guidetocsharp.de/, dank Golo.

28.11.2007 - 11:40 Uhr

Also mir kann Niemand erzählen dass er alle wichtigen Klassen des .NET Frameworks in 3 Monaten erlernt hat. Wenn überhaupt, dann vielleicht die Basisklassen wie System und System.Collections. Aber in 3 Monaten wird aus Niemandem ein ASP.NET, ADO.NET oder WinForms Profi.

28.11.2007 - 11:18 Uhr

Weil es bessere Alternativen gibt. ASP.NET wertet deine Formulare aus, und befüllt die vom Benutzer veränderten Formularsteuerelemente automatisch. Dann kannst du auf OrderTextBox.Text zugreifen statt auf (string)Request.Form["OrderValue"].

28.11.2007 - 00:04 Uhr

ASP.NET ist ein viel mächtigeres Werkzeug als PHP, doch somit auch leider um einiges komplexer. Viele Vorgehensweisen die sich der durchschnittliche PHP Programmierer aneignet, sollte er in ASP.NET lieber wieder vergessen, von daher ist es gut, dass du fragst.

Wichtig ist zu Beginn vorallem, dass du den Lebenszyklus einer ASP.NET Seite verinnerlicht hast. In PHP musstest du selbst entscheiden, wann etwas passiert. Du musstest beispielsweise mit Query-Variablen und Verzweigungen arbeiten, um mehrere Optionsbuttons auf einer Seite unterzubringen. ASP.NET nimmt dir hier sehr viel Arbeit ab, in dem es dir ein automatisiertes Ereignis-Modell anbietet. Du kannst also per Mausklick bestimmen, dass Methode A ausgeführt wird wenn Button 1 gedrückt wurde, und Methode B ausgeführt wird, wenn der Text in Textfeld 1 verändert wurde, und Methode C wenn Button 2 gedrückt wurde.
Um dieses Modell jedoch effektiv einsetzen zu können, musst du wissen in welchem Zustand sich deine Seite wann befindet. Denn das Ereignis-Modell wird dich anfangs einige Male verwirren - worauf du dich verlassen kannst.
Ganz wichtig ist auch der PostBack-Gedanke. Was ist ein PostBack, wie reagiere ich auf ihn und was bedeutet er? Das sind Fragen, nach deren Antwort du suchen solltest.

Wichtig ist auch das Thema Persistenz. Du weißt vermutlich, dass HTTP ein zustandsloses Protokoll ist, und der Webserver einen Benutzer kein zweites Mal wieder erkennt. Auch hier bietet ASP.NET Funktionen zur Automatisierung im Form des ViewStates. Der ViewState sorgt dafür, dass ein Benutzer die Seite über mehrere Navigationen hinweg so sieht, wie er sie zuletzt gesehen hat. Sprich: Ändert sich bei Seitenaufruf 3 die Hintergrundfarbe einer Tabellenzeile auf grün, wird die Tabellenzeile bei Seitenaufruf 4 immernoch grün sein, auch wenn du das nicht mehr explizit initialisiert hast.
Der ViewState kann aber auch deine Webanwendung lahm legen, wenn du ihn unachtsam verwendest. Auch hier besteht Lernbedarf.

Zum Thema Logik:

  • Datenlogik o.Ä. ist am besten in einer separaten Assembly aufgehoben, also in einem eigenem Klassenbibliotheksprojekt, welches zu deiner Webanwendung als Verweis gelinkt wird. Deine Anwendung wird dadurch besser skalierbar, und ist besser für die Teamarbeit geeignet.
    Dies erlaubt es dir z.B. auch, die Datenlogik später auf einen anderen Server zu legen und von dort aus per XML Webdienst erreichbar zu machen.
  • Logik jedoch wie das Einfärben von Tabellenzeilen auf Basis von deren Werte gehört in die CodeBehind-Datei, da diese direkt mit der Seite kommuniziert.

Datenanbindung:
Seit ASP.NET 2.0 kann die Datenanbindung in fast allen Fällen entweder komplett oder zu einem gewissen Teil automatisiert werden. Klar kann man ein Label direkt mit der Eigenschaft "Text" füllen, aber mit dem Data Binding Framework geht es doch wesentlich einfacher.
Auf www.asp.net gibt es ein paar schöne Tutorials als Einstieg.

25.11.2007 - 22:53 Uhr

Danke, aber wie soll das aussehen? Ich weiß ja nicht einmal, wie ich an die vom Benutzer aktualisierten Werte komme. Das Binding an die HTML Datei ist nicht das Thema, das funktioniert. Es geht um den umgekehrten Weg: Vom Benutzer veränderte, gebundene Werte (wie die Checked Eigenschaft der CheckBox) wieder in die DataTable zu bekommen.

25.11.2007 - 22:30 Uhr

Hallo,

ich habe gerade mit manuellem Data Binding zu kämpfen.
Und zwar nutze ich für eine ListView (.NET 3.5) nicht DataSourceID sondern DataSource, und setze das Property auf eine DataTable-Instanz.

Mit folgendem Item-Template klappt die Datenanzeige auch wunderbar:


                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description") %>'></asp:Label>
                        </td>
                        
                        <td>
                            <asp:CheckBox ID="chkDone" runat="server" Text="Erledigt" Checked='<%# Eval("Done") %>' />
                        </td>
                    </tr>
                        
                </ItemTemplate>

Doch wie funktioniert das Aktualisieren der Datensätze?
Ich habe einen Button zum Speichern auf meiner Seite. Wenn ich darauf klicke möchte ich erreichen, dass ALLE Datensätze in der ListView ihre neuen Werte in die DataTable-Instanz zurückschreiben. Und das kann ich vergessen, egal was ich versuche.

Ich habe schon probiert, manuell mittels FindControl auf die Steuerelemente im ItemTemplate zu zugreifen, doch die Werte die ich da auslesen kann sind immernoch die alten. Ich habe ListView.UpdateItem bemüht und das Event ItemUpdating abgefangen, doch die Key- und NewValue-Listen sind leer!

Sprich: Ich weiß einfach nicht, wie ich an die aktualisierten Daten komme. Wenn ich auf die Checkboxen auf der Seite klicke, bleiben die Werte in der ListView immer false. Ich weiß einfach nicht mehr weiter.

Wäre schön wenn jmd. einen Tipp für mich hätte.
Danke.

24.11.2007 - 14:41 Uhr

... und deine Frage ist natürlich so wichtig, dass sie als "Szenenews" der Community angekündigt werden muss. Extrablatt, Extrablatt! Der Herr Igg frägt nach der deutschen Version des .NET Frameworks.

22.11.2007 - 23:56 Uhr

Da bist du recht frei, solange über die Response die Informationen rüberkommen, die du brauchst. Klar kannst du einen AJAX-enabled Webservice nehmen, im Prinzip kann es aber auch ein HTTP Handler sein, oder eine ASPX Seite.

22.11.2007 - 23:29 Uhr

Ok habe es selbst herausgefunden, hier vollständigkeitshalber die Lösung:


// Irgendein Eingangsdatum mit irgendeiner Uhrzeit:
DateTime date = DateTime.Now;

// Datum nach dem gesucht wird
DateTime dt1 = new DateTime(date.Year,date.Month,date.Day);
DateTime dt2 = dt1.AddDays(1);

Und dann im SQL Statement einfach mittels UND-Verknüpfung filtern:


SELECT (...) WHERE (Spalte >= @Dt1) AND (Spalte < @Dt2) (...)

22.11.2007 - 23:14 Uhr

Da wirst du wohl am besten AJAX verwenden. Du musst mit JavaScript einen Timer einstellen (window.setInterval), der regelmäßig beim Server anfrägt, ob es vom zweiten Client neue Informationen gibt (was auch immer du hin- und herschicken willst). Ich würde einen generischen HTTP Handler für die Serverseite nutzen, das ist recht einfach.
Parallel dazu müssen per AJAX auch Informationen für den zweiten Client an den Server geschickt werden.

Wie du dir sicher denken kannst, ist das im Prinzip recht performancelastig, wenn der Server ständig angepollt wird, im Webumfeld gibt es allerdings wenig Alternativen. Persistente Verbindungen können nicht aufgebaut werden, es sei denn man nutzt ein Applet, ein ActiveX Plugin, Flash, Silverlight o.Ä.
Wenn du den ganzen Zusatzkram nicht willst, bleibt nur AJAX. Um meinen Vorschlag aber dennoch blumig zu unterstreichen, möchte ich erwähnen, dass mittels dieser Technik durchaus schon größere Webprojekte realisiert wurden, die auf Kommunikation unter Clients basieren.

22.11.2007 - 23:05 Uhr

Perfekt, danke!! Die Anführungszeichen im SELECT Statement müssen beim Wert natürlich weg, dann geht es, der Fehler ist weg.

Mein nächstes Problem ist, dass beim SELECT nun nicht nur das eigentliche Datum sondern auch der Zeitwert mit berücksichtigt wird. Die Zeit ist mir aber total egal, ich will lediglich nach dem Datum filtern.

Wie stell' ich das an?

22.11.2007 - 23:00 Uhr

Hallo The Shihan,

danke für deine Hilfe, aber leider funktioniert es wie gesagt so nicht. Der Fehler tritt bei der Parameterzuweisung nicht auf, sondern beim Ausführen der Datenbankoperation. Ich poste mal den Zugriffscode.

Wie du siehst habe ich jetzt bei der Value-Eigenschaft DateTime.Now angegeben, zum Testen.


DataTable result = new DataTable();
_con = new SqlConnection(Settings.Default.DBConnection);
_cmd = new SqlCommand(@"SELECT * FROM Tasks WHERE (TaskDate = '@Date') AND (Appointment = '@Appointment') AND (UserID = '@UserID');", _con);
SqlParameter dateParam = new SqlParameter("@Date", SqlDbType.DateTime);
dateParam.Value = DateTime.Now;
_cmd.Parameters.AddWithValue("@Appointment", appointments);
_cmd.Parameters.AddWithValue("@UserID", userId);
_cmd.Parameters.Add(dateParam);
_adp = new SqlDataAdapter(_cmd);
try {
    _adp.Fill(result);
}
catch (... usw ...)

22.11.2007 - 22:49 Uhr

Ja genau, date ist eine Instanz vom Typ DateTime. Ich habe es auch schon ohne ToString() probiert, aber da hatte ich das gleiche Problem. Es erscheint dennoch die Meldung, ein String könne nicht in Datetime konvertiert werden. 🙁

22.11.2007 - 20:12 Uhr

Verwendetes Datenbanksystem: SQL Server 2005

Hallo,

ich habe es bisher nicht gewusst, aber ich bin zu doof um nach einem Datum zu filtern 🙂
Ich dachte eigentlich dass die Sache sehr trivial ist, aber ich bekomme es einfach nicht gebacken einen im SELECT ... WHERE-Statement nach einem Datum zu filtern:


// _con = SqlConnection
// date = DateTime
_cmd = new SqlCommand(@"SELECT * FROM Tasks WHERE (TaskDate = '@Date') AND (Appointment = '@Appointment');", _con);
SqlParameter dateParam = new SqlParameter("@Date", SqlDbType.DateTime);
dateParam.Value = date.ToString("yyyy-MM-dd");
_cmd.Parameters.AddWithValue("@Appointment", appointments);
_cmd.Parameters.Add(dateParam);

Doch ich bekomme immer die Exception, dass der String nicht in DateTime konvertiert werden konnte.
Ich habe alle möglichen Format bei date.ToString probiert. Ich habe auch versucht, mit CONVERT(DATETIME, '@Date',104)) das Datum zu formatieren, die Exception bleibt.

Wer kann mir auf die Sprünge helfen?

Danke

22.11.2007 - 15:48 Uhr

Wie gesagt, am besten PlaceHolder verwenden. Darin kannst du n Controls einbetten, und kannst darüber hinaus noch genau die Position bestimmen. Genau dafür wurde dieses Steuerelement entworfen.

22.11.2007 - 15:45 Uhr

Hallo Peter,

klar intern wird das so gelöst sein, da hast du recht. Da liegt die Berechnung aber zum Glück in den Händen eines wohlgetesteten Browsers, der langjährig immer weiterentwickelt und von einer Unzahl von Menschen getestet wurde. Und genau aus diesem Grund sollte man sich auch nur noch die ID des DIVS zurückgeben lassen, und nicht mit eigenen Koordinatenberechnungen hantieren, denn der Umgang damit ist nicht ganz einfach:

  1. Das Box-Model muss unter Umständen beachtet werden, padding, margin und dergleichen, wobei sich hier Browser in manchen Feinheiten unterschiedlich verhalten können.
  2. Beim Scrollen mit Mausrädern mus man bei manchen Browsern (IE z.B.) noch ein Scrolloffset mit an die Mauskoordinaten hängen, bei anderen aber wieder nicht.
  3. Wenn sich ein DIV bewegt, oder skaliert wird, müssen eventuell gespeicherte Koordinaten aktualisiert werden. Aus eigener Erfahrung kann ich sagen, dass man bei großen JavaScripts (>2.000 Zeilen) mit vielen Benutzerinteraktionsmöglichkeiten mal ganz schnell auf die Schnauze fliegen kann.
  4. Der z-index müsste selbst berücksichtigt werden, durch Sortieren der Ergebnisse.

Man lebt einfach angenehmer und stressfreier, wenn man möglichst wenig auf Mauskoordinaten zugreift. Und das bietet sich in einem solchen Fall, wo es um das Ermitteln der ID geht, einfach an. 🙂

22.11.2007 - 08:12 Uhr

Mein Server (allerdings ROOT) ist bei ecs-webhosting.de.
Abgesehen vom recht niedrigen Traffic (300 GB) ist das Angebot super. Die Leistung ist gut, und man erhält nette Zusatzfunktionen wie programmierbare SMS- und Faxgateways.

22.11.2007 - 08:11 Uhr

Mittels event.srcElement (IE) bzw. e.target (Mozilla und andere) bekommst du die ID. Diese kannst du ja im mousemove-Ereignis abfragen (falls du die DropZone beim Darüberbewegen visuell hervorheben willst), oder im mouseup-Ereignis, falls du prüfen willst, ob sich das gezogene Element in der DropZone befindet.

Mit Koordinatenkollision würde ich an deiner Stelle nicht arbeiten. Das ist fehleranfällig.

21.11.2007 - 13:33 Uhr

Ich weiß nicht wie die FTP-Client-Situation vorher war, aber in .NET 3.5 ist sicher keine neue FTP-Client-Klasse hinzugekommen.

21.11.2007 - 12:40 Uhr

System.IO.StreamWriter wäre eine Möglichkeit.

20.11.2007 - 15:41 Uhr

Original von gerritlober
oder kann mir jemand das nötigste erklären??

😁 👍

20.11.2007 - 10:59 Uhr

Danke für deine Antwort. Das mit der Kultur war zwar umständlich ausgedrückt, aber du weißt ganz genau was ich meinte.

Für weitere Ratschläge wäre ich dankbar, ansonsten müsste ich mich vielleicht doch mit dem Thema .NET 3.5 und Rootserver auseinandersetzen. Muss man ja eh früher oder später.

20.11.2007 - 10:45 Uhr

Hallo,

ich benötige die Funktionalität von TimeZone.GetDaylightChanges und TimeZone.IsDaylightSavingTime, allerdings nicht für meine eigene Zeitzone, welche ich mit TimeZone.CurrentTimeZone erhalte, sondern von einer beliebigen Zeitzone. Nun wollte ich fragen, ob man eine Zeitzone abhängig von einer Kultur instanziieren kann.

Ich weiß, mit .NET 3.5 und TimeZone2 ist das alles super und toll, aber .NET 3.5 will ich mir momentan noch nicht auf den Server hauen, auch wenn ich die Beta2 schon nutze. Ich suche also nach einer .NET 2.0-Möglichkeit.

Danke.

19.11.2007 - 12:45 Uhr

Bitte ändere die Farbe nicht - ich finde die Programmoberfläche sehr hübsch, vorallem das gelb.

Das Programm macht einen sehr vernünftigen Eindruck. Bin gespannt auf das Endergebnis!
Btw. "Sicherungspacket" soll doch vermutlich "Sicherheitspaket" heißen oder?

18.11.2007 - 21:21 Uhr

Was hier in diesem Forum auf jeden Fall überzogen ist, ist die Tatsache, dass wegen solchen Kleinigkeiten ein riesen Fass aufgemacht wird. In jedem anderen Forum wäre ein Thread wie dieser hier schon längst geschlossen worden. Er soll gehen, und damit hat es sich. Es ist zwar löblich, dass sich das Team jede Beschwere zu Herzen nimmt, aber ernsthaft auf diesen Schrott einzugehen finde ich schlicht und ergreifend unnötig.

16.11.2007 - 14:53 Uhr

Für den anfänglichen, halbtransparenten Seitenschutz reicht ein DIV aus, das über die Seite gelegt wird. Buttons, Links, Textfelder etc. sind dadurch auch nicht mehr nutzbar, auch die clientseitigen Events von darunterliegenden HTML Elementen werdne nicht mehr gefeuert. Für die Halbtransparenz musst du folgende Attribute setzen, damit sie weitestgehend in allen Browsern funktioniert. Ich habe hier jetzt eine JavaScipt-Notation aus meinem Projekt kopiert, natürlich kann man diese Angaben auch in CSS machen.


        tdHandle.style.KHTMLOpacity='0.40';
        tdHandle.style.MozOpacity='0.40';
        tdHandle.style.opacity='0.40';
        tdHandle.style.filter='alpha(opacity=40.0)';

15.11.2007 - 14:25 Uhr

Original von Peter Bucher

Die zweite Aussage ergibt für mich wenig Sinn, denn WindowsForms ist keine ASP.NET Alternative 😉

Gruss Peter

Die Tatsache, dass die Aussage keinen Sinn ergibt ist genau der Sinn, den sie ergeben soll.

15.11.2007 - 10:37 Uhr

Ich denke als Webentwickler sollte man JavaScript nicht scheuen. Die Möglichkeiten wurden dir genannt. Wenn du C# pur programmieren willst, dann schreib' halt WinForms.

15.11.2007 - 07:55 Uhr

Ich würde behaupten, dass du dafür JavaScript benötigst. Hänge ein Script an den Button und schau' dir diese Funktion an: http://de.selfhtml.org/javascript/objekte/window.htm#open

13.11.2007 - 17:57 Uhr

Es ist auch schon eine sehr merkwürdige Anforderung. 😉

12.11.2007 - 21:46 Uhr

Baue ein PlaceHolder-Control an die Stelle ein, an der du später die dynamischen Controls einfügen willst.
Im Code kannst du dann mit PlaceHolder.Controls.Add die Controls hinzufügen. Das PlaceHolder-Control ist natürlich unsichtbar und dient als Platzhalter für dynamisch generierte Steuerelemente.

12.11.2007 - 13:17 Uhr

Du kannst doch bei einem UserControl das Steuerelement mittels GDI+ selbst zeichnen, und da hast du doch ARGB-Farben, oder verstehe ich das Problem nicht?

12.11.2007 - 12:51 Uhr

SqlDataAdapter.Update führt Inserts, Updates und Deletes aus. Die Statements kann man sich mit dem SqlCommandBuilder btw. automatisch generieren lassen.

Was meinst du mit zwei DataSets? Mit dem einen möchtest du Updates durchführen, mit dem anderen die Delete-Operationen?

12.11.2007 - 12:45 Uhr

Zwei Gründe fallen mir jetzt spontan ein, warum man Grafiken in einer externen Assembly auslagern würde:

  1. Man will die ausführbare Assembly klein und somit leicht aktualisierbar halten. Somit muss man bei einem Programmupdate für den Kunden nicht die ganzen Grafiken mitschleppen

  2. Man schreibt sich eine Form von "Theme"-Assemblies, welche austauschbare Programmdesigns darstellen.

Ich persönlich bette Grafiken meist direkt in die ausführbare Assembly ein. Themes sind nicht mein Ding und meistens handelt es sich sowieso lediglich um ein paar GUI Grafiken, die beschweren die Assembly wirklich 😉