Mittwoch, 18. Januar 2017

ASP.Net MVC Loading with Progress Indicator


Stellenweise sind Operationen innerhalb des Controllers abhängig von den zu verarbeiteten Daten. Für den Nutzer kann der Eindruck entstehen das die Webseite nicht mehr Reagiert. Mit Hilfe eines einfachen Progress Indicator, kann den Nutzer verständlich angezeigt werden das die Verarbeitung noch andauert.

Im meinem Fall verwendet ich eine einfaches gif welches ich über JavaScript zur Anzeige bringe. So eine Gif kann problemlos mit dem Ajaxload Generator (http://www.ajaxload.info/) erstellt werden.

Im der View verwende ich folgenden Code:


@section Scripts{
    <script type="text/javascript">
        function ProcessingReset() {
            $('#loadingReset').show();
        };
    </script>
}
Im meinem Fall verwendet ich eine einfaches gif welches ich über JavaScript zur Anzeige bringe. So eine Gif kann problemlos mit dem  Ajaxload Generator (http://www.ajaxload.info/) erstellt werden.
@Html.ActionLink("Buchung zurücksetzten", "ResetViewMarksBooking", new { SearchYear = ViewBag.CurrentYear, years = 1 }, new { @class = "btn btn-warning", onclick = "ProcessingReset();" })

Das Image „loadingReset” ist im Normalfall verborgen, erst durch die JavaScript Methode ProcessingReset zur Anzeigte gebracht.
<img id="loadingReset" src="~/images/ajax-loader-small.gif" alt="" hidden="hidden" />
Alternativ könnte auch ein Input verwendet werden und die onClick direkt Überschrieben werden.

<input type="submit" value="Buchung zurücksetzten" class="btn btn-warning" onclick="ProcessingReset();" />

<img id="loadingReset" src="~/images/ajax-loader-small.gif" alt="" hidden="hidden" />


Freitag, 16. September 2016

ASP.NET MVC: Disable Unobtrusive Validation on POST


Eines nützlichsten Dinge im MVC ist „Unobtrusive Validation“ über JavaScript. Ein guter Artikel zur Unobtrusive Validation kann unter folgenden Link gefunden werden: https://www.exceptionnotfound.net/asp-net-mvc-demystified-unobtrusive-validation/ Er beschrieb die Funktionsweise recht gut.

Leider wieder diese unauffällige Validierung mit zunehmender Datenmenge nicht mehr so unauffällig. Ein POST einer List e von Objekten kann dann schnell den Eindruck erwecken das der Browser sich aufgehängt hat.

Um die Validierung für die Seite zu deaktivieren reicht es über den HtmlHelper die Methode EnableUnobtrusiveJavaScript(false) aufzurufen. (https://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper.enableunobtrusivejavascript(v=vs.118).aspx )

So können auch größer Liste übertragen werden.

Montag, 5. Oktober 2015

CSS Attribut zur Laufzeit ändert


Die JQuery.css() Methode ermöglicht es recht einfach  CSS Attribute einer Klasse anzupassen oder zu Setzen.
Im folgenden Beispiel soll das Hintergrund Attribut der bootstrap „logo-bar“ dynamisch gesetzt werden, ohne die gesamte Klasse gegen eine neue auszutauschen, nur um ein Attribut zu ändern. 

CSS

.logo-bar{

           z-index:1030;

           width:100%;

           position:fixed;

           left:0px;

           top:0px;

           background:url(../../logo-hg.png) repeat-x top left;

    } 

Javaccript


<script type="text/javascript">

        $(document).ready(function () {

       if ( @model.JVId == 00001003) {

            $('.logo-bar').css({ "background": "url(../../logo-hg_Red.png) repeat-x top left" });

       }

       else

       {

             $('.logo-bar').css({ "background": "url(../../logo-hg.png) repeat-x top left" });

       }

        });

</script> 

Hier wird für im falle das die JVId 00001003 ist die das CSS Attribut der „logo-bar“ Klasse neu gesetzt. 


Bis zum nächsten mal

Mittwoch, 4. März 2015

Prüfen ob ein ConnectionString gültig ist und eine Verbindung aufgebaut werden kann.


Es kommt schon mal vor das man einen Verbindungszeichenfolge oder eine Verbindung zu einer Datenquelle überprüft werden muss. Hierfür hat sich folgen Lösung als zuverlässig erwiesen zumal man so auch mit einem anderen TimeOut Wert Testen möchte als bei der produktiven abfrage.
 
 
 
 
 
 
 
Durch die Verwendung des SqlConnectionStringBuilder werden die KeyNotFoundException, FormatException und ArgumentException der Verbindungszeichenfolge an sich geprüft. Mit dem anschließenden Verbindungsaufbau wird die Erreichbarkeit geprüft. 
 

 
 

Dienstag, 23. September 2014

Datenabruf aus Micorsoft Dynamics AX2012 R3 für eine Windows 8.1 App

Der Microsoft Dynamics AX2012 R3 bietet uns von hause aus schon einige Web Service mit deren Hilfe wir Daten aus dem AX konsumieren können. Hier bei möchte ich den QueryService Web Service hervorheben. Mit diesem lassen sich sowohl statische Querys aus dem AX ausführen als auch eigen Querys die in der Applikation definiert werden.

Hierdurch ist es uns möglich schnell und recht unkomplizierter Daten aus dem Microsoft AX 2012 R3 in einer App für Windows 8.1 oder Windows Phone 8.1 zu präsentieren.

hier ein kleines Beispiel für eine AX Query Ausführung:














 
Hier muss das benutzte Query jedoch im AX angelegt werden, was entsprechende AX Kenntnisse voraussetzt.

Alternativ können auch eigene Query in der Applikation erstellt werden, dies setzt dann eine Kenntnis der  Datenstriktur voraus.
 
Hier das Beispiel für eine solches Query:
 























 

Dienstag, 22. Juli 2014

Barcode mit ZXing.Net Generieren

Um einen Barcode mit der ZXing.Net API zu erstellen braucht es nicht viel. Man erstellt sich eine Instanz der Klasse BarcodeWriter aus der ZXing.Net API. Diesem "writer" wird das gewünschte Format übergeben und wenn nötig noch weitere Parameter zur Größe.
Mit der Methode "write" kann dann der gewünschte Barcode erstellt werden.

Siehe Beispiel:











Als Rückgabe der Methode erhält man ein PixelData-Objekt welches sich in ein WriteableBitmap umwandeln lässt, welches wir dann in der App verwendeten können.

Ich hoffe ihr habt viel Spaß beim selber ausprobieren, bis zum nächsten mal.

Windows Phone 8.1 Barcode Scanner mit ZXing.Net

Im voran gegangen Post Windows 8.1 Barcodescanner App mit ZXing.Net von mir, habe ich darauf hingewiesen das unter Windows Phone 8.1, uns der CameraCatureUI Dialog nicht zur Verfügung steht und aus diesem Grund die Methoden der MediaCature Klassen verwendet werden müssten.

Hier nun das Beispiel unter Windows Phone 8.1. Dieses Vorgehen kann auch unter Windows 8.1 in einer Windows Store App verwendet werden.

Zu beginn müssen wir die das MediaCature Objekt initialisieren und ein paar Einstellung vornehmen.
 















Um die richtig Kamera Id zu erhalten, verwende ich die folgende Methode diese ermittelt anhand gewünschten Kamera Position die Id. Sollte es keine Rückwertige Kamera geben wird die erste gefunden verwendet.









Anschließend kann wie hier im Beispiel eine Vorschau gestartet werden und auf ein Event Reagiert werden mit dem wir das Bild dann an unsere Barcode Scanner Klasse (siehe Windows 8.1 Barcodescanner App mit ZXing.Net ) übergeben.













Es ist äußerst wichtig das wir das MediaCapture-Objekt und verwandte Objekte beim Anhalten der App korrekt beenden und löschen. Andernfalls können andere Apps, die auf die Kamera des Gerätes zugreifen, gestört werden.

Daher ist es am besten für diese zwecke das MediaCapture-Objekt und das verwendete Vorschau CaptureElement als öffentliche Eigenschaften in der app.xaml.cs zu deklarieren. Im OnSuspending Ereignishändler rufen wie dann die entsprechend CleanUpCatureResouces Methode auf.

























Ich wünsche euch viel Spaß beim selber ausprobieren und bis zum nächsten mal.