Posts
337
Comments
125
Trackbacks
5
April 2006 Entries
Infos zu MasterPages

Ausführliche und erschöpfende Informationen zu MasterPages gibt es hier:

http://www.odetocode.com/Articles/419.aspx (Einführung)

und hier

http://odetocode.com/Articles/450.aspx (Tipps und Tricks)

posted @ Thursday, April 27, 2006 9:42 AM | Feedback (0)
Firefox erweitert

Letztens habe ich meinen Firefox mit praktischen Erweiterungen versehen:

- HTML Validator
- LinkChecker
- Web Developer (!)
- CSSViewer

Jetzt habe ich alle wichtigen Tools zusammen um meine Seiten vor der Freigabe gründlich zu testen.

posted @ Monday, April 24, 2006 4:01 PM | Feedback (0)
Neue Jobbörse für .NET Projekte

Ich habe unter der Adresse http://www.dot-net-jobs.de/ eine neue Jobbörse für .NET-Projekte ins internet gestellt - einach mal vorbeischauen:

Die Seite wurde übrigens mit ATLAS entwickelt.

posted @ Thursday, April 20, 2006 9:37 AM | Feedback (2)
E-Mail-Versand unter ASP.NET 2.0

Die Klassen zum Versenden von E-Mails haben sich von ASP.NET 1.0 zu ASP.NET 2.0 geändert. Heute müssen die Klassen System.Net.Mail.SmtpClient und System.Net.Mail.Mailmessage verwendet werden.

Dim SmtpObj As New System.Net.Mail.SmtpClient
Dim MailMessage As New System.Net.Mail.MailMessage()

SmtpObj.Host = "localhost"
SmtpObj.Port = 25
MailMessage.From = New System.Net.Mail.MailAddress("E-Mail-Adresse")
MailMessage.To.Add("E-Mail-Adresse")
MailMessage.Subject = subject
MailMessage.IsBodyHtml = False
MailMessage.Body = mailtext
SmtpObj.Send(MailMessage)

Mit den Methoden:

MailMessage.CC.Add("E-Mail-Adresse")
MailMessage.Bcc.Add("E-Mail-Adresse")

können CC und BCCs der Mail angefügt werden.
posted @ Tuesday, April 18, 2006 9:06 AM | Feedback (4)
Javascript-Funktion an einen Button anhängen

Neulich musste ich an einen asp:button eine Javascript-Funktion anbinden, nach einigen Recherchen habe ich folgende 2 Möglichkeiten gefunden:

senden.Attributes.Add("onclick", "javascript:alert('geklickt')")

senden.OnClientClick = "javascript:alert('geklickt')"

Wobei senden die ID des Buttons ist.

posted @ Tuesday, April 18, 2006 7:17 AM | Feedback (3)
Foxit Reader statt Acrobat Reader

Da mir das Laden des Acrobat Readers zu lange dauert habe ich mir nun den erheblich schnelleren und ebenfalls kostenlosen Foxit Reader installiert: http://www.foxitsoftware.com/

posted @ Friday, April 14, 2006 1:07 PM | Feedback (0)
PDF-Erstellung mit Access

Fürs Archiv: PDF-Erstellung mit Access

A2000SnapshotToPDFver751.zip (1,09 MB)
posted @ Wednesday, April 12, 2006 11:13 PM | Feedback (0)
Textbox im Repeater auslesen

Kürzlich hatte ich in einem Shop-System das Problem in einem Repeater die zu einem Artikel angegebene Stückzahl für die weitere Verarbeitung einzulesen.

Die ID der Textbox im Repeater kann man nicht dynamisch vergeben, <asp:TextBox ID="<%#eval("wert")%>" runat="server"> geht also nicht.

Mein Lösungsweg war der folgende:

Einer Funktion (insertWK) wird mit CommandArgument ein Wert übergeben (in meinem Fall die Artikelnummer):

<asp:LinkButton ID="linkbutton" CommandArgument='<%#Eval("artnr")%>' runat="server" oncommand="insertWK">

  • in einer Schleife die Zeilen des Repeaters einzelnen durchgehen
  • in dieser Zeile den Wert des Textfeldes einlesen
  • in dieser Zeile den Wert des Commandargument des Linkbuttons einlesen
  • wenn der Wert des Commandargumentes dieser Zeile mit dem an die Funktion übergebenen Wert übereinstimmt, dann steht in der Textbox dieser Zeile des Repeaters die eingegebene Anzahl zu diesem Artikel
  • der Wert kann dann weiterverarbeitet werden

Und hier der Quellcode der Funktion:

Sub insertWK(ByVal sender As Object, ByVal e As CommandEventArgs)

   Dim artnr As String
   Dim str, anzahl As String
   Dim i As Int16
   artnr = e.CommandArgument.ToString()

   '*** jede Zeile des Repeaters durchgehen
   For Each con As Control In Repeater1.Controls

      anzahl = ""

      '*** Controls dieser Zeile durchgehen
      For i = 0 To con.Controls.Count - 1

         If (TypeOf con.Controls(i) Is TextBox) Then
            Dim txt As TextBox = CType(con.Controls(i), TextBox)
            anzahl = txt.Text
         End If

         If (TypeOf con.Controls(i) Is LinkButton) Then
            Dim link As LinkButton = CType(con.Controls(i), LinkButton)

            '***wenn in der richtigen Zeile
            If artnr = link.CommandArgument.ToString Then

               Try
                  '*** gefunden 
                  anzahl = CType(anzahl.ToString, Integer)
   
                  ' Daten weiterverarbeiten

               Catch
                  MsgBox("Es wurde kein gültiger Wert eingegeben")
               End Try

            End If

         End If

      Next

   Next

End Sub

posted @ Tuesday, April 11, 2006 1:59 PM | Feedback (2)
ALTAS again

Habe gestern Abend mein aktuelles ATLAS / ASP.NET Projekt auf meinen Webserver gespielt und war zuerst entäuscht, da die Seiten die ATLAS verwenden ziemlich lange brauchten.

Es lag an dem Eintrag in web.config: debug="true". Wenn debug auf true gesetzt ist, lädt ATLAS bei jedem Aufruf der Seite seine Javascrit-Bibliothek neu, diese umfasst immerhin 360 KB:
http://forums.asp.net/thread/1250421.aspx

Heute nach dem Frühstück habe ich debug auf false gesetzt und es läuft alles wie gewünscht.

posted @ Sunday, April 09, 2006 11:24 AM | Feedback (0)
praktisches Tool: ASP.NET Version Switcher

Für ein Problem an meinem Server habe ich eine Lösung gesucht und bin hierbei auf das Tool "ASP.NET Version Switcher" gestossen.

Dieses Tool zeigt an welche Versionen von .Net Framework auf dem Rechner installiert sind. UNd man kann den einzelnen Webseiten die unterschiedlichen .Net Versionen zuweisen. Ideal für Entwickler die Seiten unter den verschiedenen Versionen testen wollen/müssen: http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx

posted @ Saturday, April 08, 2006 5:54 PM | Feedback (0)
Sich die Internas von ATLAS anzeigen lassen

Heute bin ich durch Zufall darauf gestossen wie man mit ATLAS einen (Javascript-) Fehler generieren und sich dann mit dem Debugger den Quellcode der Javascript-Bibliothek anzeigen lassen kann.

Wenn man dies ATLAS-Tags anstatt in <div> in <p> Tags stellt, wird ein Javascript-Fehler generiert.

<atlas:ScriptManager ID="scriptmanager1" EnablePartialRendering="true" runat="Server" />
<atlas:UpdatePanel ID="UpdatePanel1" mode="Conditional" runat="server" RenderMode="Inline">
<ContentTemplate>
...
...
...
</ContentTemplate>
</atlas:UpdatePanel>

Mit dem Debugger kann man sich dann die dazugehörige Jacascript-Bibliothek ansehen, deis sind immerhin ca. 13.800 Zeilen.

posted @ Saturday, April 08, 2006 2:44 PM | Feedback (2)
Unterschied zwischen Datalist und Repeater

Ein Unterschied zwischen Datlist und em Repeater-Objekt liegt in der Umsetzung der Liste in HTML. Das Repeater-Objekt gibt die einzelnen ITEMs so aus wie sie im Repeater-Objekt formatiert wurde.  das Datalist-Objekt macht das gleiche, packt aber zusätzlich alle Items jeweils in eine Tabellenzelle.

Für die Umsetzung von speziellen Layouts kann diese Information nützlich sein.

posted @ Friday, April 07, 2006 8:08 PM | Feedback (1)
Neue Eigenschaft bei der Validierung: SetFocusOnError

Für Formularfelder - im Zusammenhang mit der Validierung - gibt es in ASP.NET 2.0 nun die neue Eigenschaft: SetFocusOnError.

Diese Eigenschaft gehört zum Tag RequiredFieldValidator. Wenn SetFocusOnError auf TRUE gesetzt ist, dann wird der Corsor/Focus bei nach der Validierung einem Fehler in dieses Feld gesetzt.

<form id="form1" runat="server">
<div>
<b>Name: </b>
<asp:TextBox ID="name" runat="server" ></asp:TextBox>
<asp:RequiredFieldValidator ID="reqValName" runat="server" ControlToValidate="name"
Display="Dynamic" ErrorMessage="Name fehlt."
SetFocusOnError="True"></asp:RequiredFieldValidator><br />
<b>E-Mail:</b>
<asp:TextBox ID="email" runat="server" ValidationGroup="Foo"></asp:TextBox>
<asp:RegularExpressionValidator ID="regExpValEmail" runat="server" ControlToValidate="email"
Display="Dynamic" ErrorMessage="ungültige E-Mail-Adresse!" SetFocusOnError="True"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ></asp:RegularExpressionValidator><br />
<asp:Button ID="btn1" runat="server" Text="senden"/></p>

</div>
</form>

posted @ Thursday, April 06, 2006 8:48 AM | Feedback (0)
Datumsabfrage

Fürs Archiv: Datumsabfrage in ACCESS (mit ASP):

Feld_Datum < #" & month(date()) &"/"& day(date()) &"/" & year(date()) & "#"

posted @ Tuesday, April 04, 2006 11:09 PM | Feedback (0)
Atlas im Formular mit Validierung

Habe eben ATLAS in eine ASP.NET-Seite Formular mit Validierung eingebaut und es funktioniert.
Der Aufbau mus der folgende sein:

<script runat="server">

Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Page.Title = "Impressum"
End Sub

Protected Sub Nachricht_senden_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsPostBack And Page.IsValid Then
        ... mache das was Du machen sollst ...
End If
End Sub
</script>

... Text vor dm Formular ...

<atlas:ScriptManager ID="scriptmanager1" EnablePartialRendering="true" runat="Server" />
<atlas:UpdatePanel ID="UpdatePanel1" mode="Conditional" runat="server" RenderMode="Inline">
<ContentTemplate>

<div>
<%
If Not Page.IsPostBack Then
%>
    ... Formularfelder anzeigen ...
    
    <asp:button id="Nachricht_senden" runat="server" CssClass="button_240" Text="Nachricht senden" OnClick="Nachricht_senden_Click"></asp:button></td>
    <%
Else
    %>
     ... Text nach dem Versenden des Formulares (Danke für Ihr Nachricht)...
<%
end if
%>
</div>
</ContentTemplate>
</atlas:UpdatePanel>

posted @ Tuesday, April 04, 2006 8:09 PM | Feedback (0)
Web-Diagramme mit .NET erstellen

Ich war auf der Suche nach eine Möglichkeit online ansprechende Diagamme zu erstellen.

Neben etlichen kommerziellen Lösungen habe ich bei http://intex.ath.cx/TimeDataPlot.aspx ein kostenloses Control gefunden. Damit lässt sich z.B. folgende Grafik erstellen:

Der Quellcode hierzu ist einfach:

Control einbinden:

<%@ Register TagPrefix="intex" TagName="TimeDataPlot" Src="TimeDataPlot.ascx" %>

Die Daten weren als DataSet übergeben:

myDataSet.Tables.Add(myDataTable);
DataView myDataView = myDataSet.Tables[0].DefaultView;

ExamplePlot.PlotTitle = " Beispiel-Grafik";
ExamplePlot.ImageAlt = "Plot Example";
ExamplePlot.DataSource = myDataView;
ExamplePlot.TimeColumnName = "time";
ExamplePlot.ValueColumnName = "value";
ExamplePlot.PlotPaddingLeft = 60;
ExamplePlot.DataBind();

ExamplePlot ist die ID des neuen Controls:

<head>
<title>TimeDataPlot Example</title>
</head>

<body>
   <intex:TimeDataPlot id="ExamplePlot" runat="server" />
</body>

posted @ Sunday, April 02, 2006 4:01 PM | Feedback (2)