• Webseitenerstellung und -hosting
  • .NET Anwendungsentwicklung
  • softwaregesteuerte Prozessoptimierung
  • .NET

    Programmierung

  • WebseitenErstellung

    undHosting

  • softwaregesteuerte

    Prozessoptimierung

  • Konzeption

    und Beratung

solutionS Daily Grind - Blog
Artikel bewerten
(4 Stimmen)

Nachdem ich ja nur schreibe wenn das Internet keine oder keine eindeutige Lösung anbietet hier der nächste kuriose Fall aus dem MS Gruselkabinett.

SQL Server Integration Servicves: Normale Zuweisung einer SQL Abfrage zu lokalen Variablen mittelts Resultset... Fehler:

 Der Werttyp __ComObject kann nur in Variablen des Typs Object konvertiert werden

Jetzt kommt man in die Versuchung die Variable auf den Typ "Object" zu ändern. Dann läuft der Task zwar sauber durch, allerdings kann man auf den gewollten Stringwert in der Objectvariable dann nicht mehr zugreifen. Dieser ist nämlich (lt. MS) eigentlich für die Zuweisung eines kompletten Resultsets (Array) gedacht. Selbst wenn man versucht die Variable via Script-Task zu zerlegen oder zu konvertieren kommt man auf keinen grünen Zweig. Glaubt mir, ich habs ein paar Stunden versucht...

Der Grund:

Datenbankspalten die als varchar(MAX) deklariert werden können einer String Variable nicht zugewiesen werden! 

...und da muss man erstmal draufkommen!!!! Bei Varchar geht man ja von String aus... Danke danke, Applaus brauche ich keine :-D

Viel Spaß weiterhin  mit SSIS

Optisch nochmal:

Artikel bewerten
(3 Stimmen)

Nachdem die banale Sortierung eines Datagrids normal keine große Sache sein sollte hier dennoch meine Lösung da es leider defakto nicht so ist. Füllt man nämlich die Daten im Code behind via Itemssource und hat zusätzlich noch eine DataGridTemplateColumn funktioniert die Sortierung nicht! Außer man geht genau so vor wie ich es hier beschreibe:

 

1. Festlegen der Grideigenschaft CanUserSortColumns auf true
2. Festlegen des SortMemberPathin den Eigenschaften des DataGridTemplateColumn im XAML
3. Setzen der ItemsSource="{Binding}" (Dummy) in den Grideigenschaften (!!!)
4. Füllen des Grids via Datacontext und konvertierung dieser als Liste!!!!

Klingt komisch ist aber so. Hier also als Beispiel:

DataGrid Name="grdLast" AutoGenerateColumns="False" AlternationCount="2" CanUserSortColumns="True" SelectedValuePath="aktivitaets_id" ItemsSource="{Binding}" IsReadOnly="True" SelectionMode="Single"

DataGridTemplateColumn Header="Datum" MinWidth="120" SortMemberPath="datum"

grdLast.DataContext = (From o In db.xxx).ToList
%AM, %08. %482 %2016 %10:%Nov

Allgemeiner Fehler in GDI+.

Artikel bewerten
(3 Stimmen)

Öffnet man ein Image über image.fromfile und versucht das Objekt z.B. nach Manipulation anschliessend über die SAVE Methode zu speichern bekommt man den Fehler

"Allgemeiner Fehler in GDI+." - was nichts anderes heisst als dass diese Methode das File sperrt. Auch ein Clonen des Objekts und ein Dispose des Originalimages helfen hier nicht. Die simple Lösung: Das Image einfach über FromStream öffnen.

Hier der Smarte Einzeiler:

Dim imgOriginal As Image = Image.FromStream(New IO.MemoryStream(IO.File.ReadAllBytes(strFilename))) 
%AM, %14. %400 %2016 %08:%Jul

Outlook Mail signieren

Artikel bewerten
(4 Stimmen)

Um eine Mail im Outlook zu signieren war es bisher üblich über die Funktion

CommandBars.FindControl(,719).Execute

den "signieren" Button des MailItem-Ribbons zu betätigen. Auch in der Vergangenheit war es schwierig da man u.U. die Execute Methode 3x aufzurufen (sic!). Nachdem dies ab Office 2013 nicht mehr funktioniert, generell wird die Commandbars Methode nicht mehr unterstützt, musste ich eine Alternative finden. Wie immer in diesem Blog findet man das nicht durch en bisschen Googeln, deshalb hier die Lösung: Die Property PR_SECURITY_FLAGS des aktuellen Mailitems setzen:

 ''' <summary>
    ''' E-Mail Item signieren (Zertifikat)
    ''' </summary>
    ''' <param name="blnSignieren"></param>
    ''' <remarks></remarks>
    Public Shared Sub Nachricht_signieren(blnSignieren As Boolean)
        Try
            Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"
            Const SECFLAG_NONE = &H0
            Const SECFLAG_SIGNED = &H2
            'Const SECFLAG_ENCRYPTED = &H1

            'Aktuelles Mailitem holen
            Dim actOutItem As Outlook.MailItem
            actOutItem = CType(oOut.ActiveInspector.CurrentItem, Outlook.MailItem)

            'Sign / Unsign
            If Funktionen.isEmailItem(actOutItem) Then
                Dim prop As Long
                prop = CLng(actOutItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS))
                actOutItem.PropertyAccessor.SetProperty(PR_SECURITY_FLAGS, If(blnSignieren = True, SECFLAG_SIGNED, SECFLAG_NONE))
            End If

            actOutItem = Nothing

        Catch ex As Exception
            Throw ex
        End Try
    End Sub

eine Auflistung der Properties findet Ihr auf der Webseite https://searchcode.com/codesearch/view/3372596/ bzw. da ich dem Internet nicht traue, ebenfalls als Textdatei im Anhang. Danke. Bitte :-)

Artikel bewerten
(3 Stimmen)

Szenario: WPF Browseranwendung, festelegen des Owners eines modalen Fensters

Lösung: Festlegen von        "window.Owner = Application.Current.MainWindow" -> Funktioniert generell

Allerdings darf dann die WindowStartupLocation NICHT "CenterOwner" sondern "CenterScreen" sein, dann klappts. Klingt komisch ist aber so.

 

 

%AM, %30. %483 %2015 %10:%Nov

WPF DataGrid Performance

Artikel bewerten
(3 Stimmen)

1000 Seiten zu DataGrid Performance, keine hat geholfen. Versuchthabe ich folgende empfohlenen Verbesserung der Eigensdchaften:

VirtualizingPanel.IsVirtualizing="False"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"
ScrollViewer.IsDeferredScrollingEnabled="True"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"

Leider brachte das bei mir nicht den erhofften Erfolg. Folgende Erweiterung des Grids im XAMLbrachte zumindest bei mir den erwünschten Erfolg:

ItemsSource="{Binding RelativeSource={RelativeSource Self}, Path=DataContext,IsAsync=True}"
ScrollViewer.CanContentScroll="False"

Also, das Binding der Itemssource auf Asnychron umstellen und die Eigenschaft CanContentScroll des übergeordneten internen Scollviewers.

TRICK: Itemssource enthält deshalb einen Verweis auf sich selbst, da aufgrund des Sortings im Codebhin die Datacontext Eigenschaft gesetzt wird!

%AM, %17. %377 %2015 %08:%Nov

ASP.NET DropDownlist Style CSS

Artikel bewerten
(3 Stimmen)

Ich frage mich warum MS beim Erstellen eines Standard ASP.NET Webforms Projekt die CSS gar grausam ausliefert. z.B. sieht eine DropDownlist im Vergleich zu einer Textbox gar furchterregend aus.

Lösung ist ganz simple: Im Style.CSS im bereich "input, textarea" (Zeile 405) um den Typ "select" erweitern:

 input, textarea, select {
        border: 1px solid #e2e2e2;
        background: #fff;
        color: #333;
        font-size: 1.2em;
        margin: 5px 0 6px 0;
        padding: 5px;
    }

leider hat die Dropdownlist aufgrund Padding, Border etc der Textbox noch ein Problem mit der Breite, deswegen bei Bedarf nochmal explizit festlegen:

input, textarea {
        width: 300px;
    }

    select {
        width: 312px;
    }
Seite 1 von 8