Laden...

Forenbeiträge von barzefutz Ingesamt 95 Beiträge

14.02.2013 - 12:13 Uhr

Lege ich den Ordner nun einfach manuell an, wird bei der anmeldung des Benutzers einer Ordner "username.computername" angelegt.

Hallo,

es ist nur ein Link, aber vielleicht hilft dir das weiter?

How to programmatically create User Profile [C#]?

Scheint wohl recht kompliziert zu sein, wenn man das Profil gleich miterstellen will...

10.02.2013 - 02:55 Uhr

Hallo,

ich würde gerne mal wissen was es für Gründe gibt, die Einstellungen einer Anwendung in der Registry oder im Benutzerordner zu speichern.

Irgendwie fällt mir dabei kein einziger Grund ein, die Registry zu benutzen. Sie macht es dem Benutzer schwerer, die Einstellungen zu ändern und zu sichern, sie akzeptiert nur bestimmte Datenformate und eine bestimmte Datenstruktur (Name-Wert-Paare)... könnte mir höchstens vorstellen, dass die Registry schneller ist, aber das dürfte ja kaum ins Gewicht fallen.

Also, was von beiden sollte man benutzen? Und wann?

16.01.2013 - 00:52 Uhr

Vielen Dank für deine Antwort. Stimmt, Enums hatte ich völlig vergessen. Ich stehe allerdings gerade etwas auf dem Schlauch. Wo ist genau der Unterschied bzw. Vorteil, ob ich jetzt

Enum SearchOptions
{
  IncludeHidden, IgnoreCase
}

oder

class SearchOptions {
  bool IncludeHidden
  bool IgnoreCase
}

nehme? Funktionieren tut doch beides, oder? Nur dass Enum halt Zahlen und die Klasse booleans benutzt.

Es ist echt krass, habe drei Jahre nicht mehr programmiert und schon wieder alles vergessen X(

16.01.2013 - 00:31 Uhr

Mir fällt dazu gleich noch eine ähnliche Frage ein. Kreativitätsflash gerade 🙂
Nehmen wir an, ich habe eine Methode, die nach Personen anhand deren ID sucht. Da hätte ich dann auch wieder zwei Möglichkeiten bezüglich der Parameter. Entweder, ich übergebe als Suchparameter nur die ID, oder ich übergebe ein komplettes Person-Objekt, welches die ID ebenfalls beinhaltet:

SuchePerson(int id)

oder

SuchePerson(Person p)

Jetzt auch wieder die Frage, was ist besser (ordentlicher, ressourcenschonender, was auch immer)?

16.01.2013 - 00:25 Uhr

Danke herbivore, ich werde es so machen wie du sagst.

16.01.2013 - 00:21 Uhr

Und ich nochmal 🙂

Nehmen wir an, ich habe eine Methode, die Dateien suchen soll. Diese soll eine Reihe Suchparameter entgegennehmen, beispielsweise ob Groß- und Kleinschreibung berücksichtigt werden soll, ob Unterverzeichnisse durchsucht werden sollen, ob versteckte Dateien berücksichtigt werden sollen etc. Dann habe ich zwei Möglichkeiten, diese Parameter zu übergeben. Einmal so:

Suche(bool großklein, bool unterverzeichnisse, bool hiddenfiles)

Oder ich erstelle ein spezielles Objekt, was die Suchparameter kapselt, beispiel:

class SuchOptionen
bool großklein
bool unter
bool hidden

Und übergebe dann beim Suchen eine Instanz davon:

Suche(SuchOptionen)

Was würdet ihr bevorzugen? Ein gewichtiges Argument für die zweite Methode ist natürlich, dass wenn sich die Suchparameter ändern, ich nicht überall die Parameter in den Methodendefinitionen anpassen muss. Ein Argument dagegen könnte sein, dass es vielleicht Overkill ist, zumal ich die Klasse nur ein einziges Mal brauche.

16.01.2013 - 00:11 Uhr

Wenn ihr eine Methode habt, die als Parameter als Einziges eine ID annimmt und eine Person zurückgibt, wie würdet ihr diese dann nennen: GetPerson() oder GetPersonById()?

Man könnte argumentieren, der Zusatz ById erklärt bequemerweise gleich den Parameter mit, andererseits könnte man argumentieren, dass man den Parameter auch im IntelliSense sieht und deshalb kein Zusatz nötig ist.

15.01.2013 - 22:16 Uhr

Das finde ich sehr interessant was du schreibst. Eigentlich sollte man ja meinen, die Leute steigen von C++ auf C# und .NET um, weil es einfacher ist. Der umgekehrte Ansatz ist mit Sicherheit seltener (aber deshalb nicht schlechter). Vielleicht ist es ja gerade reizvoll, von C# auf C++ umzusteigen, weil man dann genug know-how dafür hat. Als du noch als C#-Entwickler gearbeitet hast, konntest du da schon C++ als du zu C++ umgestiegen bist? Oder hast du alles von Grund auf gelernt?

15.01.2013 - 20:53 Uhr

Hallo,

das war eher auf meine persönliche Wahrnehmung bezogen. Für mich war .NET damals die Technologie, die besser und ausgefeilter als alles vorherige war und damit alles andere überflüssig machen sollte (bis vielleicht auf extrem performanceabhängige Sachen). Also mehr ein Ersatz, keine Alternative. Aufgrund dessen dann meine Verwunderung, warum viele etablierte Windows-Entwickler es dann noch nicht nutzen.

15.01.2013 - 20:00 Uhr

Danke für den Tipp. Gehe ich recht in der Annahme, dass dieses MVVM der "bevorzugte" Weg ist, WPF-Anwendungen zu entwickeln? Habe mich mal ein wenig eingelesen, das kannte ich bisher noch nicht, nur mit MVC habe ich in Verbindung mit ASP schon gearbeitet. Mir stellt sich allerdings noch die Frage, inwieweit das das Problem mit dem Debugging löst. Wird es dadurch gelöst, dass in der View praktisch keine Exceptions mehr auftreten können wegen der Codetrennung? Und ich würde gern noch wissen ob das mit dem Debugging unter WPF normal ist oder ob ich da irgendendwas falsch konfiguriert habe.

15.01.2013 - 08:31 Uhr

Nein, das stimmt nicht. Das XAML ist korrekt. Wenn ich in der Fehlermeldung auf Details klicke, kann ich an der InnerException auch sehen, dass der Fehler von meiner Fehlermethode kommt, also alles in Ordnung. Das Problem ist eben nur, dass er nicht in die Methode springt, sondern mir diese nichtssagende XamlParseException präsentiert, die völlig irreführend ist.

15.01.2013 - 01:46 Uhr

Wenn ich genau denselben Code in einer WinForms-Anwendung ausführe, funktioniert es wie gewünscht. Dort springt er direkt zu der Zeile, die den Fehler verursacht hat. Wie kann ich das in der WPF-Anwendung erreichen?

15.01.2013 - 01:41 Uhr

Ich habe hier ein etwas seltsames Problem und bin ratlos. Ich habe eine WPF-Anwendung und in meinem Hauptfenster steht folgender Code:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Class1.FehlerverursachendeMethode();
        }
    }

Wenn ich das Programm ausführe, zeigt mir VS an, dass ein Fehler aufgetreten ist. Soweit so gut, aber er springt nicht zur fehlerverursachenden Zeile in Class1, sondern sagt mir nur, dass ein Fehler in MainWindow aufgetreten ist und springt auch nicht in den Code:

15.01.2013 - 01:21 Uhr

Ja das mit dem VirtualStore wäre natürlich sehr hässlich. OK, ich sehe es ein, die Nachteile überwiegen 🙂

Aber das mit den "Überbleibseln" beim Löschen des Tools finde ich immer noch hässlich. Das kann man wohl nur mit einem Uninstaller lösen.

15.01.2013 - 01:07 Uhr

Aber das Programm wird ja nicht in den Programme-Ordner installiert. Der Speicherort ist beliebig. Der Benutzer lädt es runter und würde es z.B. nach C:\Users\Stefan\Tools\MyTool extrahieren. Was wäre dann?

14.01.2013 - 20:14 Uhr
  • MS entwickelt nur für Windows seine CLR

Stimmt, das wird's wohl hauptsächlich sein. Eigentlich schade, aber andererseits würde MS sich ja ins eigene Fleisch schneiden, wenn sie dafür sorgen dass die Programme auch auf den anderen Systemen laufen 😁

14.01.2013 - 20:09 Uhr

Hallo,

ich habe eine Frage. Wenn meine Anwendung Benutzereinstellungen abspeichern soll, wo sollte man diese am Besten ablegen? Der Tenor ist ja, soweit ich informiert bin, dass die Einstellungen in %AppData% gespeichert werden sollen, und ich verstehe auch warum das der bevorzugte Weg ist. Es gibt aber auch Fälle, die dagegen sprechen. Was ist zum Beispiel, wenn meine Anwendung ein kleines, nicht installierbares Tool ist und keinen Uninstaller hat? Wenn der Benutzer die Anwendung wieder löscht, ärgert er sich womöglich darüber, wenn Reste in %AppData% oder der Registry zurückbleiben. Wäre es da nicht besser, die Einstellungen im selben Ordner wie die Anwendung abzuspeichern? Wie würdet ihr vorgehen?

14.01.2013 - 19:50 Uhr

Hallo,

ja, das klingt alles einleuchtend 😃

Zur Portierbarkeit: Irgendwie ist das ja ironisch. Ich habe damals gelernt, ein Vorteil von .NET sei die (theoretische) Portierbarkeit, aber stattdessen wird dann doch lieber Standard-C++ verwendet. Liegt das an der mangelhaften Implementierung bzw. Verbreitung von .NET in anderen Betriebssystemen?

14.01.2013 - 19:37 Uhr

Mir ist aufgefallen, dass viele große bzw. bekannte Software-Produkte nicht auf .NET aufbauen. Beispiele wären Mozilla-Produkte, Google Chrome, Acronis True Image, TrueCrypt und weitere. Woran liegt das? Haben die Hersteller Angst, dass immer noch viele Anwender keine aktuelle .NET-Laufzeitumgebung installiert haben? Oder weil .NET-Programme im Vergleich langsamer sind? Oder hat es was mit Portierbarkeit zu tun? Und meint ihr, das wird sich mit der Zeit ändern, oder wird es immer Gründe geben, die gegen .NET sprechen?

31.12.2011 - 19:32 Uhr

Stimmt, du hast eigentlich völlig recht. Man sollte sich erst Gedanken um sowas machen, wenn es notwendig wird, das habe ich schonmal irgendwo anders gelesen. Ich war mir halt nicht sicher, ob man nicht jetzt schon absehen könnte ob es zu langsam wird, da ich keine Erfahrung mit der Geschwindigkeit von SQL Server Compact habe. Aber in diesem Fall wäre es ja nicht allzu aufwendig, die "Optimierung" nachträglich einzufügen 😃

Edit: Es gibt sogar ein Fachwort dafür: "Denormalisierung"

Denormalisierung

War mir als Anfänger bisher nicht bekannt, vielleicht interessiert der Link ja jemanden 😃

31.12.2011 - 19:16 Uhr

verwendetes Datenbanksystem: MS SQL Compact Edition

Hi,

ich bräuchte mal eure Hilfe bezüglich einer konzeptionellen Frage zu meiner Datenbank. Ich habe (vereinfacht dargestellt) eine Datenbank, in der Finanztransaktionen zu bestimmten Märkten gespeichert werden. So in der Form:

Markt 1:

Transaktion 1, -1000€
Transaktion 2, +1200€

Markt 2:

Transaktion 1: +300€
Transaktion 2: -800€

Also zwei Tabellen, in der einen sind die Märkte gespeichert, in der anderen die Transaktionen, die auf diesen Märkten abgeschlossen werden. Ich möchte dann eine Abfrage erstellen, die mir eine Übersicht nach Datum ermöglicht, wieviel Gewinn bzw. Verlust an jedem Tag erzielt wurde, also so:

11.12.2011: -300€
12.12.2011: +250€

Diese Übersicht wird ziemlich oft aufgerufen und soll für 30 Tage rückwirkend einsehbar sein.

Jetzt meine Frage: Es müssen da ja ziemlich viele Daten abgerufen werden. Für jeden Tag müssten alle Märkte abgerufen werden, und dann nochmal zu jedem Markt alle Transaktionen, und dann müsste man alles zusammenrechnen. Wäre es nicht besser, zu jedem Markt als Eigenschaft den Gewinn/Verlust extra zu speichern? Man würde damit die Geschwindigkeit steigern, aber mehr Speicherplatz verbrauchen und gegen das Prinzip verstoßen, jeden Wert nur einmal zu speichern. Eigentlich ist das ja nicht erlaubt, weil es eine Redundanz darstellt, denn der Wert kann ja auch aus den ganzen Daten berechnet werden. Aber wenn man ihn extra speichern würde, wären die Abfragen natürlich weit weniger rechenintensiv, und die Datenbank soll auch auf schwachbrüstigen Systemen lauffähig sein (es wird SQL Compact Edition verwendet, also kein Datenbankserver). Wie würdet ihr das machen? Das Ganze erscheint vielleicht etwas banal, aber ich würde gerne mal ein paar andere Meinungen einholen, bevor ich das ganze in Angriff nehme.

15.06.2010 - 12:25 Uhr

Falls jemand vorhat zu servmax zu gehen, ich kann vor diesen Anbieter nur noch abraten... auf Supportanfragen wird grundsätzlich NICHT reagiert, habe bisher drei-viermal wegen verschiedener Sachen angefragt, jedes mal kam eine Mail, dass meine Anfrage "umgehend bearbeitet" würde, danach kam nichts mehr.

09.06.2010 - 16:27 Uhr

Ich würde eine Proxy-Klasse erstellen, die das Cachen transparent macht und abstrahiert, die könnte z.b. NavigationPageProxy heissen und eine einzige Methode enthalten, GetPage. Die Klasse hat als Cache ein statisches Feld, welches den Inhalt der Navigationsseite enthält. Wenn der Cache null ist, holst du die Seite ab, speicherst sie im Cache und gibst sie zurück. Wenn nicht, überprüfst du, ob 3 Minuten verstrichen sind. Wenn nicht, gibst du die gecachte Seite zurück, wenn ja, holst du wie am Anfang die Seite neu vom Server.

09.06.2010 - 15:33 Uhr

Also ich würde es so machen:

  • Lass den Server die Navigationsseite schicken, Zusammen mit einem Expires-Header, der 3 Minuten in der Zukunft liegt, und einem Last-Modified-Header, der angibt, wann die Navigationsseite das letzte Mal geändert wurde
  • Innerhalb dieser 3 Minuten holt der Client die Navigationsseite immer aus dem Cache
  • Nach den 3 Minuten fragt er erneut den Server und schickt dabei den If-Modified-Since header mit, wenn dieser ungleich dem letzten Änderungsdatum auf dem Server ist, schickst du die aktualisierte Seite, wenn er gleich ist, schickst du einen Not Modified-Header.

So würde ich es machen, wenn der Client ein richtiger Webbrowser wäre. Das Problem an der Sache wird nur sein, dass du ja das WebRequest-Objekt als Client benutzt. Leider habe ich da gar keine Erfahrung mit, wie man damit das Clientseitige Caching umsetzen kann, also den zweiten Schritt ... hm

Du könntest den Cache ja außerhalb des WebRequest-Objektes simulieren, beispielsweise mit der HttpContext.Current.Cache-Collection, und dort deine Seite für 3 Minuten zwischenspeichern. Ich weiss natürlich nicht, ob das in Asp.NET 1.1 verfügbar ist. Ansonsten vielleicht im Application State?!

09.06.2010 - 15:07 Uhr

Ich verstehe noch nicht so ganz, was du genau erreichen willst. Einen Cache "setzen" tust du mit diesem Header ja nicht. Was meinst du denn mit "ich muss nur diesen Header Cachen"? Was willst du genau mit der Caching-Operation erreichen?

09.06.2010 - 14:42 Uhr

Edit: Hab da was falsch verstanden 😉

08.06.2010 - 18:05 Uhr

Hallo Schue,

ich habe mir das Beispiel mit großem Interesse angeschaut. Die Burrow-Erweiterung hat ja an sich nichts mit meinem Problem zu tun, oder? Das eigentlich Interessante an dem dazugehörigen Beispiel ist das wwDataBinder-Control, das es ermöglicht, die Daten aus den Datengebundenen Steuerelementen automatisch in ein Entitätsobjekt zurückzuführen. Leider habe ich nichts dazu gefunden, ob das auch mit GridViews funktioniert??

Vielleicht hätte ich mein Problem besser konkretisieren sollen, damit klarer wird woran es hängt. Also, ich habe ein GridView, welches die Daten von NHibernate bezieht und anzeigt. Für jeden Datensatz des GridView gibt es einen Button, mit dem man eine Eigenschaft des Datensatzes zwischen True/False hin- und herschalten kann. Wenn ich jetzt den Button anklicke, kann ich zwar den Primärschlüssel des angeklickten Datensatzes herausfinden, aber in Bezug auf NHibernate hilft mir das nicht. Ich brauche ja nicht nur den Primärschlüssel, sondern das komplette Objekt, um es mit NHibernate updaten zu können. Da wäre es natürlich gut, wenn das Objekt vorher irgendwo zwischengespeichert wurde, damit ich es nicht extra nochmal aus der Datenbank holen muss.

Das mit "Session per conversation" scheint dann ja das zu sein, was ich brauche, Ich werde mich da mal einlesen. Vielen Dank schonmal!

@schaedld:

Danke, ich habe mir das Beispiel sehr genau angeschaut. Aber wenn mich nicht alles täuscht, macht der genau das, was ich vermeiden wollte. Bevor er beispielsweise einen Kunden updatet, holt er nochmal ein Kunden-Objekt aus der Datenbank, nur um es zu updaten.

08.06.2010 - 00:10 Uhr

Hallo,

danke für die schnelle Antwort. Die Überlegung hatte ich noch gar nicht. Das würde bestimmt gehen, aber es das Problem könnte sein, dass die Daten viel zu groß dafür sind. Nehmen wir mal an, man transportiert die Daten einer Hundert-Zeilen-Tabelle über die Session, das wäre ja ein ziemlich großer Overhead und daher auch keine recht befriedigende Lösung. Man müsste die Daten ja quasi duplizieren, einmal für die Anzeigeelemente (GridView etc) und einmal als Entity-Objekte für Hibernate.

Ich habe mir gerade mal ein paar Beispielanwendungen angeschaut, dort wurde auch dieser Ansatz gewählt (das Objekt wurde allerdings nicht in der Session, sondern im ViewState abgelegt... das ist ja im Prinzip Jacke wie Hose). Aber irgendwie kann ich mich damit nicht so recht anfreunden.

07.06.2010 - 22:20 Uhr

Hallo,

ich versuche momentan, meine ASP.NET Webanwendung auf NHibernate umzustellen. Es ging beispielsweise um folgende Aufgabenstellung:

  • Daten aus einer Datenbank holen
  • Diese Daten in einem Formular anzeigen, welches vom Benutzer editiert werden kann
  • Nach dem Bearbeiten die geänderten Daten speichern

Die ersten beiden Schritte funktionieren tadellos, aber beim letzten Schritt komme ich nicht weiter. Um die Daten mit NHibernate wieder zu speichern, bräuchte ich ja das ursprüngliche Entity-Objekt aus dem ersten Schritt, damit ich dessen Eigenschaften ändern kann. Dieses Objekt ist aber nicht mehr vorhanden, weil inzwischen ein Postback stattgefunden hat. Das heisst, ich muss das Entity-Objekt extra nochmal aus der Datenbank holen, nur um es zu ändern und wieder zurückspeichern. Das ist ja quasi eine überflüssige SQL-Abfrage, die nicht sein müsste (Select und Update, in einer klassischen Anwendung wäre nur das Update vonnöten). Es gibt in Hibernate zwar auch die Möglichkeit, SQL-Abfragen in einer SQL-artigen Mittelsprache auszuführen, diese Sprache genügt jedoch leider nicht meinen Anforderungen.

Hat jemand eine Idee, wie man das am elegantesten lösen könnte?

04.06.2010 - 02:59 Uhr

Nur eine kleine Anmerkung, benutz für sowas einen WebHandler (.ashx) und keine Web Page (.aspx), das verbessert die Performance

31.05.2010 - 15:14 Uhr

Hallo,

danke für die hilfreichen Antworten! Ich werde mir TortoiseSVN und Git näher anschauen, ich lese mir jetzt einige Artikel dazu durch. Diese Tools werden mir bestimmt enorm weiterhelfen... seltsam, dass ich nicht schon früher drauf gekommen bin, was an meinem Entwicklungsmodell zu ändern 😃

@kelkes: Was ist denn der Vorteil von Git gegenüber SVN?

31.05.2010 - 14:57 Uhr

Hallo,

das ist ja toll... ich habe selber einmal kurz während eines Praktikums in einer Firma mit Subversion gearbeitet und fand es sehr praktisch. Aber ich dachte, das benutzt man nur wenn man mit vielen Leuten an einem Projekt arbeitet? Sollte man das auch alleine für ein eigenes Projekt benutzen oder fändet ihr, das ist "overkill"?

Benutzt ihr für Visual Studio auch Subversion? Ich habe gesehen, dass es da ein Add-In namens "AnkhSVN" gibt, habe es mir aber noch nicht näher angesehen. Benutzt ihr dieses Add-In oder gibt es noch ein anderes, welches empfehlenswert ist?

31.05.2010 - 14:42 Uhr

Hallo,

ich wollte mal von den ganzen Profis hier in Erfahrung bringen, wie ihr das mit der Versionsverwaltung bzw. Backups macht, wenn eine größere Änderung in eurem Programmcode ansteht. Nehmen wir an, es steht eine tiefgreifende Veränderung des Programms an. Dann sollte man ja eine alte Version des Programmcodes vorher sichern, falls irgendwas bei der Änderung schiefgeht. Aber wie sollte man das am besten machen? Momentan mache ich immer eine Kopie des gesamten Quellcode-Ordners und arbeite dann an dieser Kopie weiter. Wenn sich dann wieder was größeres ändert, kopiere ich wiederum diesen Ordner und arbeite daran weiter. Das führt aber dazu, dass irgendwann 20 Ordner entstanden sind nach dem Muster:

  • MeinProgramm
  • MeinProgramm (SQL Server)
  • MeinProgramm (Access)
  • MeinProgramm (Access_optimiert)
  • MeinProgramm (Access_optimiert_neu1)

Und so weiter... Total unordentlich, und das verschwendet viel Speicherplatz wenn noch Ressourcendateien mit dabei sind. Wie macht ihr das? Benutzt ihr dafür irgendwelche Tools?

30.05.2010 - 23:45 Uhr

Oh, das ging fix! Ich habe das Problem selber lösen können, hier die Lösung, falls jemand dasselbe Problem hat:

In der XML-Mapping-Datei müssen die Spaltennamen explizit mit angegeben werden, und zwar mit eckigen Klammern:

<property name="Nachname" column="[Nachname]" type="string" />

Ohne funktioniert es NICHT:

<property name="Nachname" type="string" />
30.05.2010 - 23:27 Uhr

verwendetes Datenbanksystem: MS Access

Hallo,

ich will NHibernate mit Access benutzen (dafür benutze ich NHibernate.JetDriver). Wenn ich allerdings ein Objekt mit NHibernate einfügen will, wird eine fehlerhafte SQL-Anweisung generiert und ich bekomme eine Exception wegen einem Syntaxfehler in der SQL-Anweisung:

insert into Personen (Nachname, Alter) values (?, ?);@p0 = "TestName", @p1 = 33

Ich habe diese Abfrage mal manuell in Access ausgeführt, und bekomme die Fehlermeldung "Zeichen nach Ende von SQL-Anweisung gefunden", an der Stelle wo das ;@p0 anfängt. Kann mir jemand weiterhelfen?

12.05.2010 - 19:26 Uhr

Jetzt wo du es sagst: Ist leider normal dort. Wer Support braucht, ist bei servmax anscheinend an der falschen Adresse, mir wurde dort auch nie auf irgendwelche Mails geantwortet. Da ich dort nur eine kleine Privathomepage habe, ist das nicht so schlimm, aber wenn wirklich mal was ist, dann ist man dort aufgeschmissen.

11.05.2010 - 11:23 Uhr

Nein, ist nicht möglich, weil das LINK-Element nur im Kopf einer HTML-Seite erlaubt ist. Möglicherweise wird sowas funktionieren, aber du kannst dich darauf nicht verlassen. Wenn du direkt in dem Control CSS-Eigenschaften setzen willst, bleiben dir nur zwei Möglichkeiten:

  • Die Styles inline definieren
  • Die Styles im Kopf deklarieren und im Control mit Klassen oder ID-Attributen darauf verweisen
10.05.2010 - 17:40 Uhr

du darfst die listen nicht bei jedem laden neu befüllen, dann wird der selected value jedesmal zurückgesetzt. nur einmal am anfang befüllen. hast du das beachtet?

10.05.2010 - 14:37 Uhr

Hallo,

weiss jemand, wie ich die publish-funktion von Visual Studio benutzen kann, um die Ausgabe eines Web Deployment Projects auf den Server hochzuladen? Wenn ich das WDP im Projektbrowser anklicke, wird der publish-button deaktiviert. Momentan muss ich deshalb immer manuell die WDP-Ausgabe mit einem FTP-Programm hochladen.

10.05.2010 - 14:32 Uhr

Ja, ich habe dort ein "Privat"-Paket und bin zufrieden. Insbesondere die Geschwindigkeit ist sehr gut. Schlecht ist allerdings, dass ich bisher keine Möglichkeit gefunden habe, den IIS über ein Webpanel oder ähnliches zu konfigurieren. Kann aber auch sein, dass es möglich ist und ich es nur übersehen habe.

06.05.2010 - 18:48 Uhr

Hast du irgendwas mit URL Rewriting drin, was dazwischenfunken könnte? Ansonsten bin ich auch ziemlich ratlos 😃

Eine Idee noch: Schalte mal tracing ein http://msdn.microsoft.com/de-de/library/bb979265.aspx

Und vergleiche dann mal die trace-ausgabe mit dem "falschen" parameter und einmal mit dem "funktionierenden", ob du da irgendwas finden kannst was auf das Problem hinweist.

06.05.2010 - 16:20 Uhr

Hm, wirklich seltsam. Schau mal in Request.Url oder .RawUrl nach, ob der Querystring dort noch drinsteht. Dann könnte man den Fehler etwas weiter eingrenzen.

"Das Phänomen tritt auch mit anderen ShowID Werten genauso auf."

Was meinst du damit? Tritt es wirklich nur bei genau diesem Wert auf? Du meintest ja, wenn du ein einziges Zeichen änderst, geht es wieder.

06.05.2010 - 01:52 Uhr

Hast du statt Request.Params mal Request.QueryString["ShowID"] probiert? Vielleicht funkt da irgendwas von den Params dazwischen, irgendein Cookie oder irgendwas in der Richtung. Mit QueryString gehst du sicher, dass der Parameter auch wirklich aus dem query string genommen wird.

05.05.2010 - 14:52 Uhr

Ich wollte hier gerade reinposten, dass ich die Lösung nach langer Recherche gefunden habe, aber KenchU hat es ja schon vorweggenommen. Funtkioniert prima mit dem Web Deployment Project (es gibt übrigens auch schon eine Betaversion für VS 2010).

RBA285 danke auch dir für deine Antwort

04.05.2010 - 17:18 Uhr

Hallo,

ich habe eine ASP.NET-Webanwendung. Die Einstellungen in der web.config unterscheiden sich zwischen der lokalen Version, an der ich arbeite, und der laufenden Version auf dem Webserver (z.b. compilation debug="true" für lokal, "false" für den Webserver, und noch andere Dinge wie Datenbankpfade). Momentan ändere ich diese Werte kurz vor dem Hochladen auf den Webserver von Hand um und dann beim Weiterarbeiten wieder zurück, was natürlich hochgradig lästig ist... Weiss jemand, wie ich das irgendwie automatisieren kann? Wie macht ihr das? Kann man die Werte in der web.config von bestimmten Bedingungen abhängig machen?

04.05.2010 - 16:52 Uhr

while(document.getElementById("ColumnPanel"))

Das ist eine Endlosschleife, weil getElementById immer entweder ein element zurückgibt oder einen Fehler verursacht, aber nie false zurückgeben kann

Ich empfehle dir übrigens, die Liste der ein- und auszublendenden Objekte nur einmal am Anfang festzulegen, wenn möglich, und in einer Liste zu speichern. Dann kannst du später die Liste durchlaufen, ohne jedesmal den Dokumentbaum nach den gewünschten Objekten durchsuchen zu müssen, was performancetechnisch ungünstig ist.

01.05.2010 - 01:15 Uhr

Vergleich mal mit Firebug sowohl Quelltext als auch CSS-Eigenschaften der Buttons, dann wirst du bestimmt fündig.

Was meinst du mit CSS Reset?

22.04.2010 - 21:46 Uhr

Hallo,

toggleSingleSelect ist innerhalb der ready()-Funktion und kann daher nicht angesprochen werden. Du müsstest die Funktion außerhalb einer anderen Funktion deklarieren. Ich empfehle dir, ein Singleton-Objekt für alle Seitenspezifischen kleinen Methoden anzulegen, etwa so:



var Startseite = {
	toggleSingleSelect: function() {
		$('#singleSelect').toggle("slow");
                return false;
	}
};


So hast du den Code besser gekapselt und vermeidest Namenskonflikte. Der Aufruf wäre dann wie folgt: Startseite.toggleSingleSelect()
Aber du kannst die Funktion natürlich auch einfach so deklarieren, geht genausogut. Nur eben nicht innerhalb der anderen Funktion!

Nutze anstatt der OnClientClick-Eigenschaft von ASP.NET lieber die javascript-Funktionen, um dem Linkbutton das Event anzuhängen, so wie in deinem "geht"-Beispiel. Das ist der sauberere Weg.

22.04.2010 - 19:07 Uhr

Das Flackern bekommst du leider nicht ohne partielles neuladen per JavaScript (auch AJAX genannt) weg. Da hilft auch keinerlei Caching. Falls das "flackern" einfach nur zu lange dauert, kannst du ja versuchen, die Performance von Seiten des Servers zu erhöhen. Beispiele wären: Ergebnisse von Datenbankabfragen cachen, die Ausgabe von ganzen Seiten cachen (geht sehr einfach mit ASP.NET), expires-Header für Bilder ausgeben...

Eine andere Möglichkeit wären Frames, aber das willst du höchstwahrscheinlich nicht... Ich habe auch ehrlich gesagt keine Erfahrung mit ASP.NET-Anwendungen, die in Framesets laufen.

Was auch noch sehr viel Performance bringt, ist zu überprüfen, ob der Client die Seite bereits im Cache hat. In diesem Fall kannst du den Seitenaufbau auf dem Server sofort abbrechen und einen HTTP 304-Header (not modified) zurückgeben.

Wenn du dich doch für die AJAX-Lösung entscheidest, dann benutze doch einfach die eingebauten UpdatePanels. Bei kleineren Anwendungen dauert es gar nicht mal so lange, alles darauf umzustellen. Wobei natürlich auch immer Probleme dabei auftreten können.

22.04.2010 - 14:31 Uhr

Sorry, Ich muss mich erstmal korrigieren, xmlns="" ist nicht falsch. Habe nochmal recherchiert und herausgefunden, dass das xmlns-attribut für alle Elemente gültig ist. Aber mir ist noch etwas anderes eingefallen: Es könnte sein, dass der Output mittendrin "abgeschnitten" wird, und somit das fault-Element nicht mehr geschlossen wird. Kannst du mal hier die gesamte XML-Rückgabe des Webservices posten? Das würde die Fehlersuche sehr erleichtern.

Ein Kommunikationsproblem würde ich eigentlich ausschließen. Die Kommunikation hat ja stattgefunden, aber laut .NET wurde vom Server ungültiges XML zurückgegeben. Daher würde ich den Fehler beim Webservice vermuten.

Tipp: Auf dieser Seite hier

http://validator.w3.org/#validate_by_input

Kannst du das generierte XML-Dokument einfügen und validieren lassen. So bekommst du sofort angezeigt, ob das XML fehlerhaft ist und wo die Fehler sind. Wenn er dir dort einen Fehler ausspuckt, dann müsstest du mal schauen was mit dem Webservice nicht stimmt. Es kann ja auch sein, dass deine Anfrage unerwartete Daten übermittelt, die auf seiten des Webservices zu fehlerhaftem Verhalten führen.