SQL Server & ASP .NET Blog

Interessantes und Wissenswertes

ORDER BY in Views

Die ORDER BY Klausel kann normalerweise in Views nicht verwendet werden. Tut man es doch führt das zu dieser unschönen Fehlermeldung:

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

Um nun doch in einer View sortieren zu können genügt es ein TOP Statement mit anzugeben, um also alles zu sortieren wäre das:

SELECT TOP 100 PERCENT * FROM xyz

4096 Color Wheel

Hier nur ein kleiner Hinweis für ein nettes kleines Tool, wenn mal Farben für Webseiten gebraucht werden. Versucht mal das 4096 Color Wheel. Zu finden ist es hier: [hier]

01_4096_Color_Wheel

Berechtigungen für Windows UserControl vergeben (caspol)

Das Screenshot-Usercontrol aus dem letzten Post wird wahrscheinlich nicht laufen, wenn es keine entsprechende Berechtigung hat. Das resultiert dann in einer solchen (oder so ähnlichen) Fehlermeldung:

07_Fehler

Um der Assembly, oder besser gesagt allen Assemblys die auf Webseiten in den Vertrauenswürdigen Sites (Trusted_Zone) laufen diese Rechte zu geben kann das Kommandozeilentool caspol.exe verwendet werden. Zu finden ist es unter “%Windir%\Microsoft.NET\Framework\v2.0.50727\

08_caspol

ACHTUNG! Mit dem im Screenshot gezeigten Befehl bekommen alle Assemblys in der Trusted_Zone alle  Rechte auf dem Computer. Für Tests genügt das sicherlich, für den Einsatz in der Praxis sollte die Berechtigungsvergabe differenzierter gestaltet werden :-)

Windows Usercontrol in ASP .NET Seite verwenden

Manchmal ist es nützlich Windows-Controls auf ASP .NET Seiten zu verwenden, beispielsweise, weil eine bestimmte Funktionalität gebraucht wird, die mit ASP oder JavaScript nicht oder nur sehr schwer umzusetzen ist.

Schonmal versucht einen Screenshot aus der Zwischenablage zu lesen um diesen dann in der Datenbank zu speichern? Mit ASP und JavaScript kenne ich keinen Weg, wie das zu machen ist, daher hier ein kurzes Tutorial, wie es durch das Einbinden eines Windows Usercontrol funktioniert. Selber ausgedacht habe ich mir das natürlich nicht, allerdings einige Male geschwitzt beim Implementieren :-) Daher hier noch einmal ausführlich. (Infos von [hier]und [hier] ).

Vorteile

  • es können Funktionen verwendet werden, die sonst via ASP .NET oder JavaScript nicht zur Verfügung stehen (Dateisystem auf dem Clientcomputer/Zwischenablage etc.)

Nachteile

  • funktioniert nur mit dem Internet-Explorer
  • für bestimmte Funktionen müssen der erstellten Assembly die entsprechenden Rechte vergeben werden 

Screenshot Usercontrol erstellen 

Zuerst öffne ich ein neues Projekt in Visual Studio, und zwar eine Windows Forms Control Library. 



Da ich einen Screenshot direkt im Browser machen möchte, nenne ich das Projekt der Einfachheit halber "Screenshot".

Das automatisch dem Projekt hinzugefügte Usercontrol nenne ich ebenso Screenshot. Dies wird das Control sein, mit dem später der Screenshot "aufgenommen" und gespeichert wird.


Um den Screenshot auf dem Usercontrol anzeigen zu können füge ich eine Picturebox (pbScreenshot), und als Hinweis noch ein Label (lblHinweis) zur Beschriftung hinzu. Das Ganze sieht dann so aus (also noch nicht wirklich spektakulär :-)): 


Die Form soll also heißen: "Wenn du mich anklickst und ein Bild in der Zwischenablage hast, dann zeig ich dir das an!". Durch Doppelklick auf die PictureBox lege ich den EventHandler an.

private void pbScreenshot_Click(object sender, EventArgs e)
{
if (System.Windows.Forms.Clipboard.ContainsImage()) //wenn im clipBoard ein Bild ist
{                
pbScreenshot.Image = System.Windows.Forms.Clipboard.GetImage(); //Bild anzeigen
lblHinweis.Visible = false;  //Hinweis unsichtbar
} 
else
{
MessageBox.Show("Kein Bild in der Zwischenablage!");   //Kein Bild => Hinweis
}
}

Ich denke der Quelltext ist selbstsprechend :-) Auf jeden Fall kann man nun bereits einen Screenshot auf das UserControl bringen. (Druck auf F5 und ausprobieren) Mehr...