zondag 14 maart 2010

Bepaal de complete HTML van een ASP.NET Control

De volledige HTML van een ASP.NET control (inclusief alle onderliggende controls) kan je bepalen door onderstaande code toe te passen:

string html = null;
using (StringWriter stringWriter = new StringWriter())
{
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter))
{
control.RenderControl(htmlWriter);
html = stringWriter.ToString();
}
}

Hierboven is de 'control' variabele natuurlijk een instantie van een ASP.NET control.

Helaas kan jij bij bovenstaande code tegen een probleem aanlopen. Wanneer zich binnen het control, waar je de HTML van wilt bepalen, controls bevinden die binnen een ASP.NET Form geplaatst moeten worden (zoals bijvoorbeeld een TextBox, CheckBox, enz.), dan treedt de volgende fout op:
Control 'TextBox1' of type 'TextBox' must be placed inside a form tag with runat=server

Dit probleem kan je oplossen door het volgende te doen:
  1. Zet de volgende optie in de 'Page Directive' van de pagina: EnableEventValidation="False" Deze optie kan ook in de Web.Config ingesteld worden. Dan geldt dit voor alle pagina's in je web project
  2. 'Override' de volgende methode in de pagina: VerifiyRenderingInServerForm. Deze methode hoeft dan geen enkele code te bevatten

Check het MSDN om te bepalen of je vindt dat deze twee opties inderdaad aangepast/overriden mogen worden in jouw project:
Page.VerifiyRenderingInServerForm
PageSection.EnableEventValidation

dinsdag 9 maart 2010

Vervanger voor ASP.NET Dynamic Data Web Application

Momenteel ben ik een fervent gebruiker van de ASP.NET AJAX control suite van Telerik. Ik heb geprobeerd een simpele Database editor te ontwikkelen, ter vervanging van het ASP.NET Dynamic Data Web Application project uit Visual Studio 2008.

Dit Visual Studio 2008 C# project kan je hier downloaden. Let op: de Telerik assembly is verwijderd uit het ZIP bestand. Hier zal je zelf voor moeten zorgen.

Dit project bevat:
  1. 1 LINQ to SQL diagram met alle tabellen uit mijn AdventureWorks SQL Server database
  2. 1 webpagina met:
    - 1 RadGrid voor het tonen en wijzigen van records uit een SQL Server tabel
    - 1 RadComboBox voor het tonen van alle tabellen uit het LINQ to SQL diagram
    - 3 RadioButtons voor het specificeren van de EditMode eigenschap van het RadGrid
    - 1 LinkButton om het volledige grid te exporteren naar MS Excel

Dit project is dus heel wat simpeler dan een Dynamic Data Web Application. Om deze functionaliteit te gebruiken in je eigen webproject dien je het volgende te doen:

  • Kopieer de webpagina en het LINQ to SQL diagram naar je eigen webproject
  • Verwijder alle tabellen uit het LINQ to SQL diagram en voeg de tabellen uit je eigen SQL Server database aan het diagram.

Dat is alles... succes ermee !

maandag 19 oktober 2009

Vervanger voor ValidatorCalloutExtender van AjaxControlTookit

Al enige tijd maak ik dankbaar gebruik van het AjaxControlTookit in mijn webapplicaties. Het control wat ik het meest gebruik is de ValidatorCalloutExtender. Deze extender vervangt de standaard meldingen van een ASP.NET Validator control door een fraaie tooltip.

Sinds kort maak ik gebruik van de Telerik controls (RadControls for ASP.NET AJAX), welke mijns insziens een zeer volwassen pakket met ASP.NET AJAX controls is.

Eigenlijk wil ik niet beide control suites in één project gebruiken en daarom heb ik een vervanger voor de ValidatorCalloutExtender van het AjaxControlTookit ontwikkelt. Deze vervanger is ook een ASP.NET AJAX Extender, welke gebruik maakt van de RadTooltipManager om de tooltips bij een Validator control te tonen.

Ik heb deze extender in een test web project geplaatst, welke je hier kan downloaden. In dit bestand heb ik overigens de assemblies van Teleriek niet toegevoegd. Daar zal je zelf voor moeten zorgen.

Hieronder een korte uitleg van deze extender:
De belangrijkste onderdelen van de extender zijn een klasse, genaamd ValidatorRadTooltipExtender, en een javascript bestand, genaamd ValidatorRadTooltipBehavior.
ValidatorRadTooltipExtender
De ValidatorRadTooltipExtender klasse erft van de abstracte klasse ExtenderControl, welke de basis is voor ASP.NET AJAX control extenders. Deze klasse bevat de volgende eigenschappen:
  • RadTooltipManagerID = het ID van het RadTooltipManager control welke gebruikt wordt om de tooltips te tonen
  • HighlightCssClass = naam van de class in de stijlen van de pagina, welke wordt gebruikt om toe te passen op het control wat gevalideert wordt (bijv. een Textbox welke verplicht is om in te vullen), wanneer het control ongeldig is volgens de validatie
ValidatorRadTooltipBehavior
Dit is het javascript bestand welke de extender functionaliteit implementeert. Hierbij wordt de EvaluationFunction van het Validator control vervangen door een eigen Validate functie. Deze functie voert wel de EvaluationFunction van het Validator control uit, maar zorgt er daarna voor dat het ToolTip wordt getoond op de pagina.
Hiernaast worden event handlers toegevoegt voor de Focus en Blur events van het control wat gevalideert wordt. Bij OnFocus wordt de tooltip getoond (indien deze niet geldig is volgens de validatie) en bij OnBlur wordt deze tooltip weer verborgen.

Webpagina
De volgende onderdelen dienen toegevoegd te worden aan een pagina, om gebruikt van deze extender te kunnen maken:
RadTooltipManager
Dit control dient toegevoegd te worden aan de webpagina of aan de Master van de webpagina. De volgende eigenschappen op dit control zijn van belang:
  • RelativeTo = waar (gerelateerd aan welk object) dient de tooltip gepositioneerd te worden. Deze eigenschap dient op 'Element' ingesteld te worden
  • HideEvent = welk event zorgt ervoor dat de tooltip weer verborgen dient te worden. Deze eigenschap dient op 'FromCode' ingesteld te worden
  • ShowEvent = welk event zorgt ervoor dat de tooltip weer getoond dient te worden. Deze eigenschap dient ook op 'FromCode' ingesteld te worden
Validator
Naast het element wat gevalideert dient te worden (bijv. een Textbox) dient natuurlijk het Validator control (bijv. de RequiredFieldValidator) aan de pagina toegevoegd te worden. Voor dit control zijn de volgende eigenschappen van belang:
  • ErrorMessage = de melding die in de tooltip getoond moet worden indien het element niet geldig is. Hierbij kan je gewoon gebruik van HTML maken, zodat je de tooltip een leuk uiterlijk kan geven!
  • Display = deze eigenschap dient op 'None' ingesteld te worden, zodat de ErrorMessage van de validator niet in een label wordt getoond. Hiervoor wordt natuurlijk de tooltip gebruikt.
  • SetFocusOnError = indien deze op 'True' wordt ingesteld dan zal het element wat gevalideert wordt de focus krijgen wanneer dit niet geldig is. Door deze actie zal het OnFocus event ervoor zorgen dat de tooltip direct getoond wordt.
Hierboven zijn de belangrijkste onderdelen van dit extender control beschreven. Hieronder een screenshot van deze extender in werking.


Veel succes met dit extender control.

woensdag 30 september 2009

Fiedelientje Blog

Mijn vrouw is een tijdje geleden een webwinkel begonnen onder de naam Fiedelientje. Nu is ze een Blog gestart waarin ze probeert een beetje te kunnen laten zien van achter de schermen en de ontwikkeling van haar winkeltje.

Fiedelientje is een kinderlifestyle webwinkel voor kleine wereldburgertjes. Houdt u van lieflijk, kleurrijk, stippen en ruitjes en niet van een standaard assortiment dan bent u bij Fiedelientje aan het juiste adres. U vind hier artikelen van verschillende leveranciers, maar ook handgemaakte artikelen van eigen ontwerp.

Bezoek haar blog eens op http://fiedelientje.blogspot.com/

woensdag 22 april 2009

SSH op VMware ESXi inschakelen

SSH staat standaard uit in VMware ESXi. VMware geeft ook geen support indien je SSH wel inschakeld op ESXi. Toch is het wel erg handig als je remote op de console van ESXi kan inloggen om bijvoorbeeld wat maintenance uit te voeren.

Hieronder staan de stappen beschreven waarmee je SSH kan inschakelen op ESXi:

  • Start VMware ESXi op en toets in het console op ALT-F1:


  • Typ het commando unsupported in:

  • Geeft het wachtwoord van de root gebruiker in
  • Typ nu het volgende commando in: vi /etc/inetd.conf

  • Ga (met behulp van de pijltjestoetsen) naar de regel waar #ssh staat en verwijder het # teken

    - ga voor het # teken staan
    - druk op de Insert toets
    - ga met de cursor over het # teken
    - druk op de Backspace toets
  • Druk op de ESC toets en typ het commando wq om het bestand te bewaren
  • VMware ESXi dient nu opnieuw opgestart te worden.
    Zorg er wel voor dat alle virtuele machines netjes zijn afgesloten (door in het operating systeem een shutdown uit te voeren)
Nadat VMware ESXi is herstart kan je met behulp van een SSH tool, zoals bijvoorbeeld PuTTY, remote inloggen op de ESXi console.

Success ermee !


Bron(nen): VM-Aware

donderdag 26 maart 2009

Installeer SCSI hard disk in VMWare Virtual Machine met Windows XP

Wanneer je in een VMWare virtual machine Windows XP wilt installeren met een Hard Disk van het type SCSI, dan heb je een probleem met de drivers. De benodigde drivers zitten namelijk niet in een standaard Windows XP installatie wat veroorzaakt dat de Windows XP installatie de hard disk niet 'ziet' en dus de installatie niet kan voltooien.

VMWare heeft wel een driver hiervoor beschikbaar gestelt, welke je kan downloaden op http://www.vmware.com/download/ws/drivers_tools.html onder het kopje SCSI Disk Drivers. Dit is een Floppy image die je in je Virtuele Machine kan koppelen aan de floppy drive. In de Windows XP installatie kies je dan de optie "Druk op F6 om een niet-Microsoft SCSI/RAID stuurprogramma te installeren". Daarna kies je "E=Extra apparaat opgeven" en Enter om de "VMWare SCSI Controller" te selecteren. Wanneer je daarna de installatie probeert te voltooien krijg je, tijdens het kopiëren van de bestanden, de foutmelding "Setup kan het bestand vmscsi.sys niet kopiëren". Helaas kan je nu de installatie niet goed voltooien.

Een simpele manier (en eentje die zeker werkt) is het 'slipstreamen' van de SCSI driver in de Windows XP installatie. Ik heb hiervoor nLite gebruikt. Met behulp van nLite kan je de gehele Windows XP installatie aanpassen. Ik richt me in dit artikel alleen op het integreren van de driver:
  • Download de laatste versie van nLite op hun website en installeer deze
  • Start nLite op en selecteer de directory waar de Windows XP installatie staat. Dit kan ook de CD-ROM drive (waar de installatie CD van Windows in zit) zijn
  • Klik een aantal keer op Next totdat je onderstaand venster te zien krijgt:

    Selecteer hier de opties Drivers en Bootable ISO
  • Klik hierna op Next totdat je onderstaand venster te zien krijgt:

    Download hier het ZIP bestand met de VMWare SCSI Driver en extract de inhoud naar een folder.
    Klik hier op Insert en selecteer daarna Single Driver. Nu heb je de mogelijkheid om de SCSI driver te selecteren welke in de Windows XP installatie toegevoegd zal worden.

    Selecteer de VMWare SCSI Controler en klik op OK
  • Klik een aantal keer op Next totdat je onderstaand venster te zien krijgt:

    Klik op Make ISO om een ISO bestand te genereren welke je daarna kan branden op CD óf aan een VMWare CD Drive kan koppelen
  • De installatie van Windows XP kan nu op een 'normale' manier uitgevoerd worden. De installatie zal automatisch de HD 'zien' en de juiste drivers installeren.

Succes ermee !

vrijdag 13 maart 2009

Leuke Speech gadgets bij Acapela.tv

Ik ben momenteel bezig met het uitzoeken van de Speech API van Microsoft welke in het .Net framework geïntegreerd is (System.Speech). Via Google kwam ik op de website van Acapela en Acapelat.tv. Daar heb je een aantal zeer leuke gadgets, waaronder deze hieronder. Klik op de 'Play' knop en laat je verrassen. Erg indrukwekkend hoor !!!