Blog Home  Home Feed your aggregator (RSS 2.0)  
HP's Blog - Tuesday, February 03, 2009
Hans-Peter Schelian's Weblog
 
# Tuesday, February 03, 2009

Nachdem ich einige Aufräumarbeiten in den Inhalten meiner OneNote Notizbücher durchgeführt hatte, war mir aufgefallen dass die Dateigröße der einzelnen OneNote Dokumente (*.one Dateien) trotz nun erheblich weniger Inhalten noch immer unverändert groß waren.

In meinem speziellen Fall der “Nicht abgelegten Notizen” führte das zum Beispiel dazu, dass obwohl nun keine Notiz mehr enthalten war, die Dateigröße noch immer über 9 MB betragen hat.

Nachdem ich weder in der OneNote Hilfe noch im Internet auf Anhieb fündig geworden bin (ich hatte nach komprimieren bzw. verkleinern von OneNote Dokumenten gesucht), habe ich die Optionen von OneNote durchsucht und bin in der Kategorie “Speichern” dann doch noch fündig geworden.

“Dateien optimieren”

Dieser Begriff war mit bisher neu und da ich sicherlich beim nächsten mal wieder nicht weiß das mit Dateien optimieren, komprimieren gemeint ist, erstelle ich diesen Blog Beitrag.

Dateien optimieren - Komprimieren - Verkleinern

Als Gedächtnisstütze sozusagen Light bulb

Allgemein | Tips und Tricks
Tuesday, February 03, 2009 10:27:43 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [2]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, January 06, 2009

Hintergrund

In einer Windows Form Applikation wird in einer Form ein DataGridView verwendet das je nach Bedarf Schreibgeschützt (Alle Spalten) oder zur Eingabe von Daten (nicht Schreibgeschützt) verwendet werden soll. Soweit würde die Anforderung auch kein Problem darstellen, wenn - aber dazu lest einfach den Rest des Beitrags.

Nun ist es aber so, dass auch in der Variante indem das DataGridView als Eingabe (also nicht Schreibgeschützt) verwendet wird, die eine oder andere Spalte des DataGridView sehr wohl (zur Zeit der Entwicklung, also nicht zur Laufzeit) auf Schreibgeschützt gesetzt wurden.

Eigentlich sollte das ganze kein Problem darstellen, also "Einfach sein", wie es im Lied der FANTA4 beschrieben ist, aber wie geht es im Lied weiter; "is es aber nicht", und genau so ist es auch in dem hier beschriebenen Fall.

Das Problem liegt daran, dass durch das setzen der ReadOnly Eigenschaft des DataGridView auf True das DataGridView "vergisst" welche Spalten des DataGridView während der Entwicklungszeit auf ReadOnly gesetzt wurden.

Nachdem man während der Laufzeit die ReadOnly Eigenschaft des DataGridView einmal auf True und dann später wieder zurück auf False gesetzt hat, sind alle Spalten, auch diese die vorher ReadOnly waren plötzlich nicht mehr Schreibgeschützt.

Die Idee

Die Idee der nachfolgenden Lösung war schnell entstanden und wird im folgenden beschrieben.

Beim Start der Windows Form (am besten direkt im Konstruktor) muss man die Information der Schreibgeschützten Spalten sichern, und diese nachdem die ReadOnly Eigenschaft des DataGridView zurück auf False geändert wurde, einfach wieder auf die ursprünglichen Werte herstellen.

Die Lösung

Um die Information, welche Spalten beim Start der Windows Form Schreibgeschützt sind zu speichern, verwende ich ein typisiertes Array von int Werten um den Spalten Index der Schreibgeschützten Spalten zu sichern.

private List<int> saveReadOnlyColumn;

Die Logik zum Speichern der Informationen habe ich in eine eigene Methode (siehe nachfolgenden Code der Methode saveReadOnlyColumnInformation) ausgelagert, welche ich dann einfach am Ende des Konstruktor aufrufe.

private void saveReadOnlyColumnInformation()
{
    saveReadOnlyColumn = new List<int>();

    foreach (DataGridViewColumn o in dgVerladung.Columns)
    {
        if (o.ReadOnly)
        {
            saveReadOnlyColumn.Add(o.Index);
        }
    }
}

So nun haben wir die Informationen der Schreibgeschützten Spalten im typisierten Array für den späteren Gebrauch gespeichert.

Dann kümmern wir uns nun noch darum, diese gespeicherte Information immer dann wenn die ReadOnly Eigenschaft auf False gesetzt wurde, wieder auf die Startwerte zurücksetzen.

Hierzu können wir einfach den ReadOnlyChanged Event des DataGridView verwenden, welcher immer dann ausgelöst wird, wenn man im Code die ReadOnly Eigenschaft ändert.

Nachfolgend ist der Code dargestellt um die vorher gespeicherten Schreibgeschützten Spalten wieder herzustellen

private void dgVerladung_ReadOnlyChanged(object sender, EventArgs e)
{
    if (dgVerladung.ReadOnly == false)
    {
        foreach (int i in saveReadOnlyColumn)
        {
            dgVerladung.Columns[i].ReadOnly = true;
        }
    }
}

 

Der Vollständigkeit halber hier noch der Code des Konstruktor's (Hier erklärt die Zeile 4) dargestellt.

public formPlanungen()
{
    InitializeComponent();
    saveReadOnlyColumnInformation();
    Application.Idle += new EventHandler(Application_Idle);
}
Programmierung | Code | Tips und Tricks | C#
Tuesday, January 06, 2009 11:26:34 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, December 30, 2008

Nachdem bereits die letzten Versionen (seit über 2 Jahren) von DotNetNuke keine aktualisierte Dokumentationen enthalten haben, wird leider auch mit der aktuellen Version 5.0 eine weitere Dokumentation's Mogelpackung zum Download bereitgestellt.

Das mit DotNetNuke 05.00.00 Docs bezeichnete Download enthält nur alte Dokumentationen (letzte Aktualisierung am 21.06.2006) .

Dann werden wir wohl die dringenden Fragen doch im Forum der Deutschen DotNetNuke Community klären müssen.

Hierzu habe ich auch einen neuen Bereich im Forum eingerichtet.

DotNetNuke | Open Source
Tuesday, December 30, 2008 10:31:10 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Thursday, December 25, 2008

Wie eigentlich nicht anders zu erwarten war, wurde der Final Release der Version 5.0, der Open Source Software DotNetNuke, am 24. Dezember 2008 und damit auf den Tag genau 6 Jahre nach der ersten Veröffentlichung, damals noch als IBuySpy Workshop, zum Download für die Öffentlichkeit bereitgestellt.

Nachdem ich selbst vor 6 Jahren an den Weihnachtstagen im Jahr 2002 diese erste Version des späteren DotNetNuke heruntergeladen und damit experimentiert hatte, war ich von dem Virus befallen, der mich bis Heute auch nicht wieder verlassen hat.

Wer mehr zur Historie von DNN (wie DotNetNuke in der Umgangssprache genannt wird) erfahren möchte kann dies in diesem Beitrag auf DotNetNuke.com nachlesen (Bericht in Englischer Sprache).

Von Januar 2004 an wurde alles was das Projekt an Versionen bereitgestellt hat, auf Sourceforge.NET veröffentlicht.

Die neue Version 5.0 und auch ein erstes Maintenance Release, Version 4.9.1, sind nun auf Codeplex, der Microsoft eigenen Open Source Plattform gehostet, was Microsoft sicherlich freuen dürfte und woran MS vermutlich auch nicht ganz unbeteiligt sein wird.

Hier geht es direkt zum Download der Version 5.0 auf Codeplex

Hier geht es direkt zum Download der Version 4.9.1 auf Codeplex

Übrigens sind alle Versionen ab 2004 nun auch auf Codeplex zum Download verfügbar. Das lässt vermuten, dass die Verbindung zwischen DotNetNuke und Sourceforge endgültig beendet ist.

Und nicht zu vergessen:

image

DotNetNuke | Open Source
Thursday, December 25, 2008 9:47:32 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Monday, December 15, 2008

Ohne große Ankündigung und ohne genaue Beschreibung welche Probleme gelöst wurden, wurde vergangenes Wochenende ein Maintenance Release des Blog Moduls für DotNetNuke veröffentlicht.

Die Versionsnummer dieser Version lautet 3.05.01.

Die neue Version kann man hier herunterladen.

DotNetNuke | Module
Monday, December 15, 2008 6:39:41 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, December 02, 2008

Seite Heute ist die neue Version 4.1 des Software Tools ReSharper verfügbar.

Die Version kann man hier herunterladen.

Die wichtigsten Feature dieser Version sind:

  • Support für Microsoft Visual Studio 2008 SP1
  • Verbesserte ASP.NET Bearbeitung
  • Geschwindigkeit Verbesserungen
  • ... und vieles mehr

++ Nachtrag vom 05.12.2008 ++

Bitte die Hinweise im Kommentar zur Veröffentlichung dieses Beitrags beachten. Eigentlich sollte dieser Beitrag am 02.09.2008 und nicht am 02.12.2008 an den Blog übertragen werden. Nun ist aber wie von Geisterhand dieser Beitrag in einem Mail Server hängen geblieben um dann exakt 3 Monate später ebenfalls wie von Geisterhand doch an den Blog übertragen zu werden.

Programmierung | Tools
Tuesday, December 02, 2008 7:44:03 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [5]  
Autor: Hans-Peter Schelian  |  Trackback
# Wednesday, November 12, 2008

Das ist Neu, zum ersten mal auch ein Release Candidate einer DotNetNuke Version öffentlich für alle Zugänglich.

DotNetNuke Version 5.0 (RC2) steht seit letzter Nacht zum Download für die Öffentlichkeit zur Verfügung.

Aber Achtung, auch wenn die Version nun öffentlich zugänglich ist, sollte man diese Version nicht für den Live Einsatz eines Portals verwenden, welches man, nicht nachdem die endgültige Version fertiggestellt wurde wieder, löscht und mit der offiziellen Version neu aufbaut.

Ich erinnere mich noch an die Probleme die es, sowohl bei der 3er als auch bei der 4er Version, gab, wenn man die Beta Versionen später versucht hat mit einer aktuelleren Version zu aktualisieren. Da fehlte es hier und da, vor allem an Konsistenz in der Datenbank.

Also Finger weg vom Live Einsatz dieser Version.  Auf jeden Fall dann wenn man mit dem Gedanke spielt, diese nach Veröffentlichung des offiziellen Release weiter betreiben zu wollen.

Hier geht es zum Download der DotNetNuke Version 5.0 RC 2 (Cambrian)

DotNetNuke | Installation
Wednesday, November 12, 2008 6:17:44 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, November 11, 2008

In den letzten Wochen haben mir einige Leute, die in den Genuss der Beta Version bzw. des Release Kandidaten von DotNetNuke 5.0 (Cambrian) gekommen sind, über folgendes Problem bei der Installation berichtet.

Das Problem ist übrigens auch im offiziellen englischsprachigen DotNetNuke Forum beschrieben, allerdings ohne eine entsprechende Lösung für das Problem zu beinhalten.

Hier nun die Problembeschreibung:

Beim Versuch der Installation auf einem Windows XP Rechner erhält man plötzlich folgende Fehlermeldung:

System.NullReferenceException: Object reference not set to an instance of an object. at DotNetNuke.UI.Utilities.MSAJAX.Serialize(Object Obj) 
at DotNetNuke.UI.Utilities.ClientAPI.SerializeClientVariableDictionary(Page objPage, Dictionary`2 objDict) 
at DotNetNuke.UI.Utilities.ClientAPI.CAPIPreRender(Object Sender, EventArgs Args) 
at System.Web.UI.Control.OnPreRender(EventArgs e) 
at System.Web.UI.HtmlControls.HtmlInputHidden.OnPreRender(EventArgs e) 
at System.Web.UI.Control.PreRenderRecursiveInternal() 
at System.Web.UI.Control.PreRenderRecursiveInternal() 
at System.Web.UI.Control.PreRenderRecursiveInternal() 
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Wenn man die Fehlermeldung sehr aufmerksam ließt, dann erhält man eigentlich schon die Antwort auf das Problem beschrieben.

Das Problem liegt in diesem Fall daran, dass die ASP.NET Ajax Extension für ASP.NET 2.0 nicht oder nicht richtig installiert sind.

Die Ajax Extension für ASP.NET 2.0 kann man hier herunterladen.

Wenn die Ajax Extension noch nicht installiert sind, dann einfach die Extension installieren, sonst muss man zuerst die Ajax Extension deinstallieren und dann noch einmal neu installieren.

DotNetNuke | Installation
Tuesday, November 11, 2008 9:38:34 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
Copyright © 2010 Hans-Peter Schelian - Schelian IT Beratung. All rights reserved.