XP-Variante.

5 11 2008

Ich stand vor der Aufgabe in einem C#-Programm zwischen Windows XP Home und Windows XP Professional unterscheiden zu können. Für die Unterscheidung unterschiedlicher Windows Versionen nützliche Systemvariablen lassen sich leider nicht nutzen und auf eine Funktion der „kernel32.dll“ wollte ich nicht zurück greifen sondern so weit es geht innerhalb des .Net-Frameworks bleiben.

Doch auch hier gibt es Hilfe. Einfach die Referenz zu System.Management erstellen und eine neue Using-Zeile einfügen:

using System.Management;

Nun kann man auf die benötigten Daten zugreifen. Die folgende Funktion gibt einen String zurück, der bei XP Home „Windows XP Home“ und bei Prof. „Windows XP Professional“ heißt.

string getOS_Caption()
{
   string tmp;
   ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT caption FROM Win32_OperatingSystem");
   tmp = "";
   foreach (ManagementObject obj in searcher.Get())
     tmp = obj["caption"].ToString();
   return tmp;
}

Diese Funktion ist nur ein Ansatz. Jegliche Prüfung ob es überhaupt ein Windows XP ist, werden nicht durchgeführt, das müsst ihr selbst machen 🙂

Advertisements




Programmierer geboten.

5 10 2007

Seit letzter Woche bin ich Diplom-Informatiker (Dipl.Inf.).

Die letzte Hürde, die Diplomarbeit, wurde mit einer zufriedenstellenden 1,7 genommen. Jetzt geh ich stempeln und schreibe Bewerbungen und bin auf der Suche nach einem Job.

Wer also noch einen Programmierer brauch meldet sich am Besten mal bei mir. Ich kenn mich mit den .NET-Sprachen C# und VB.Net aus, bin fit in Sachen Java. Für Webgeschichten kann ich mit ASP.NET, PHP und Javascript aufwarten. Damit die Daten auch nicht verloren gehen, beherrsche ich  den Umgang mit MS-SQL, PostgreSQL sowie MySQL.

Meldet euch einfach bei mir und ich lasse euch eine ausführliche Bewerbung zukommen.





Es ist vollbracht.

24 08 2007

Ich habe es nicht für möglich gehalten als ich hörte wer Beisitzer in meiner Prüfung ist.

2 Leute aus deutschlandweit bekannten Softwarefirmen.

Die Fragen waren dann doch irgendwie zu schaffen. Hauptsächlich ging es um C#, Ajax,  SSL, Datenbanken etc. pp.

Nach einer Stunde war das ganze vorbei.

Resultat: 1,5! Ich bin mehr als nur zufrieden.

Danke für alle die mir die Daumen gedrückt haben.





ASP.NET – Headergrafik bei sortiertem Gridview

15 08 2007

Wenn ich mir meine Pagehits so anschaue, scheinen sich viele für den Gridview & Checkbox-Artikel zu interessieren.

Deshalb nun ein weiterer Artikel zu diesem Thema. Gridviews lassen sich super einfach sortieren, nur leider wird nie angezeigt nach welcher Spalte gerade sortiert wird bzw. ob aufsteigend oder absteigen.

Abhilfe kann man sich recht einfach schaffen:

public void gridJobs_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if ((e.Row != null) && e.Row.RowType == DataControlRowType.Header)
        {
            foreach (TableCell cell in e.Row.Cells)
            {
                if (cell.Controls.Count > 0)
                {
                    LinkButton button = cell.Controls[0] as LinkButton;
                    if (button != null)
                    {
                        Image image = new Image();
                        image.ImageUrl = "image/empty.gif";
                        if (gridJobs.SortExpression == button.CommandArgument)
                        {
                            if (gridJobs.SortDirection == SortDirection.Ascending)
                                image.ImageUrl = "image/sort_up.gif";
                            else
                                image.ImageUrl = "image/sort_down.gif";
                        }
                        cell.Controls.Add(image);
                    }
                }
            }
        }
    }

GridJobs heißt mein Gridview, das müsst ihr auf euren Code anpassen. Es gibt drei Grafiken, eine ist einfach nur durchsichtig (empty.gif), ein Pfeil nach oben (sort_up.gif) für aufsteigende Sortierung und einen Pfeil nach unten (sort_down.gif), für die absteigende Sortierung.Damit die oben genannte Prozedur auch ausgeführt wird müsst ihr noch folgendes in der ASP.NET-Seite zu eurem Gridview hinzufügen.

OnRowCreated="gridJobs_RowCreated"

Viel Spaß & Erfolg!





ASP.NET – Checkbox im Gridview

31 07 2007

Ich stand heute vor dem Problem, dass ich eine Checkbox innerhalb eines Griedviews brauchte. Die viel mir ein, das ich einen Vodcast dazu gesehen habe.

Ganz konnte ich es nicht anwenden, zum Einen nutze ich C# und zum anderen hab ich meinen Gridview innerhalb eines Ajax-UpdatePanels – somit soll nicht nur erfasst werden, welche Checkboxen irgendwann mal angeklickt wurden, sondern ich will nur den wirklichen aktuellen Status.

Ich bin mir sicher, meine Anpassungen sind nicht perfekt, ich beschäftige mich aber noch nicht all zu lang mit C#, deshalb bitte ich um Nachsicht. Verbesserungsvorschläge nehme ich aber gerne an!

Der Typ „HybridDictionary“ ist nicht in „System.Collections“ zu finden sondern in „System.Collections.Specialized“.

using System.Collections.Specialized;

Nun noch meine Funktion die Aufgerufen wird, wenn der Wert einer Checkbox sich ändert.

Achtung! Meine Variablen habe ich nicht so genannt wie die Variablen im Vodcast. Ich hoffe, dank der Kommentare, ist es trotzdem verständlich.

protected void chkSaveJob_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chkGvSaveJob = ((CheckBox)sender);                             // Aktuelle Checkbox
        GridViewRow selGvRow = ((GridViewRow)chkGvSaveJob.NamingContainer);     // Selektierte Reihe des Gridvies
        if (Session["selIndexes"] == null)                                      // Sessionvariable "selIndexes" nicht gesetzt?
        {
            HybridDictionary dictChk=new HybridDictionary();                    // neues HybridDictionary
            if (chkGvSaveJob.Checked)                                           // Checkbox angehakt?
                dictChk[selGvRow.Cells[0].Text] = selGvRow.Cells[0].Text;       // wenn ja dann ID speichern
            else
                if (dictChk[selGvRow.Cells[0].Text] != "")
                    dictChk.Remove(selGvRow.Cells[0].Text);                     // wenn nein, Eintrag entfernen
            Session["selIndexes"]=dictChk;                                      //  Sessionvariable wieder befüllen
        }
        else                                                                    // Sessionvariable "selIndexes" gesetzt
        {
            HybridDictionary dictChk=((HybridDictionary)Session["selIndexes"]); // HybridDictionary aus Session auslesen
            if (chkGvSaveJob.Checked)                                           // restliche Bearbeitung analog zum oberen Teil
                dictChk[selGvRow.Cells[0].Text] = selGvRow.Cells[0].Text;
            else
                if (dictChk[selGvRow.Cells[0].Text] != "")
                    dictChk.Remove(selGvRow.Cells[0].Text);

            Session.Add("selIndexes",dictChk);
        }
    }