Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Monday, February 25, 2008
Neues rund um's Thema .Net
 
 Monday, February 25, 2008

In den letzten Tagen wurde ich häufiger gefragt, welche Edition von Visual Studio man benötigt, um mit dem Team Foundation Server zu arbeiten. Viele sind irrtümlicherweise der Meinung, dass der TFS nur mit dem VSTS zusammenarbeitet, aber das stimmt glücklicherweise nicht. Bereits ab der Standard-Edition wird der Team-Explorer in Visual Studio integriert und man hat Zugriff auf die Quellcode-Verwaltung und Workitems, wie man das auch aus dem VSTS zusammen mit dem TFS gewohnt ist. Da der Team-Explorer sich ja auch als Standalone installieren lässt, wäre theoretisch auch ein Arbeiten mit der Express-Edition möglich, aber das ist natürlich nicht mehr sehr komfortabel.

Ich würde aber auf jeden Fall dei Professional-Edition von Visual Studio 2008 empfehlen, da diese nun auch Unit-Tests unterstützt und für einen normalen Entwickler damit eigentlich ausreichend sein sollte.

Monday, February 25, 2008 11:28:48 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Friday, February 22, 2008

Brian Harry beschreibt in diesem Beitrag verschiedene Upgrade-Szenarien, so z.B. auch wie eine Workgroup-Edition auf eine Full Version upgegraded (furchtbar diese Entwickler, können einfach kein Deutsch, hat jemand dafür eine Übersetzung?) werden kann.

Danke an Lars für den Link

bharry's WebLog : How do I upgrade to TFS 2008?

Friday, February 22, 2008 3:29:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [1]    | 
 Thursday, February 21, 2008

In Köln wird von den regionalen Communities ein Event organisiert. Für alle, die den Launch-Event von Microsoft in Frankfurt verpasst haben oder denen dabei die Praxis etwas zu kurz kam, sollten sich diesen Event vormerken.

Ich selbst werde dort in 2 Tracks einen Überblick über den Team Foundation Server geben.

Hier noch ein paar Infos zum Event:

Es braut sich etwas zusammen in Nordrhein-Westfalen! Anlässlich der Vorstellung von Windows Server 2008, SQL Server 2008 und Visual Studio 2008 haben sich die User Groups aus Bonn (Bonn-to-Code.Net), Köln (.net User Group Köln) und vom Niederrhein (VfL Niederrhein) zusammengetan, um unter der Schirmherrschaft des JustCommunity e.V. ergänzend zum offiziellen Launch ein Community-Event der besonderen Art auf die Beine zu stellen:

  • Ein ganzer Tag voller Vorträge, verteilt auf drei parallele Tracks
  • Sprecher, die als Entwickler und IT-Professionals aus ihrer täglichen Arbeit heraus Praxiswissen vermitteln
  • Große Verlosung u.a. von Windows Server 2008, SQL Server 2008 und Visual Studio 2008 (not-for-resale-Versionen)
  • Vielfältige Möglichkeiten zum Networking mit anderen Teilnehmern und Firmen aus der Region

Und das zu einem Preis von 8,- Euro, in dem auch noch Verpflegung und Parkausweis enthalten sind.

AFTERLAUNCH
Launch war gestern - heute ist Praxis
Freitag 11. April 2008, KonferenzZentrum im Technologiepark Köln

Anmeldung und weitere Infos auf
www.afterlaunch.de

Thursday, February 21, 2008 9:47:41 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Ich war die vergangenen 3 Tage auf dem Launch-Event von Microsoft in Frankfurt als ATE. Das war wirklich mal eine Konferenz wie ich Sie bisher im .Net Umfeld noch nicht kannte. 7.500 Teilnehmer! Als Veranstaltungort hatte Microsoft die Messe Frankfurt ausgewählt und durch die langläufigen Gebäude waren leider die Wege recht weit.

P1000745 Das war nur die AUssteller-Halle. Hier bekommt man eine Ahnung wie groß die Veranstaltung war.


Ich war als ATE (Ask the Expert) mit dem Schwerpunkt Team Foundation Server aktiv und habe in den 3 Tagen viele Fragen zu dem Thema beantworten können und auch viele interessante Diskussionen geführt. Schön für mich war, dass man merkte, dass der Team Foundation Server nun langsam an Fahrt aufnimmt und immer mehr Verbreitung findet. Das konnte man sicher an der Zahl der Fragen zu dem Thema ablesen und sicher hat auch die Tatsache, dass sich eine Vollversion im Give-Away-Paket der Teilnehmer befand, dazu beigetragen, das der eine oder andere sich mit dem Thema nun doch auseinandersetzt.

P1000750 Der ATE-STand

Christian Binder hatte eine ganze Reihe von Vorträgen zum Thema VSTS und hatte mich im Vorfeld gebeten, einen kleinen Praxisbericht einzubauen. Ich konnte dann in einer seiner Sessions vor rund 600 Zuschauern in 10 Min. demonstrieren, wie wir den TFS im Rahmen unseres Entwicklungsprozesses nutzen. Da eine Live-Demo in dieser Zeit unmöglich ist, habe ich eine für mich neue Präsentationsform gewählt. Ich habe die Aktionen in einem Video aufgezeichnet und das Video dann live kommentiert. Damit konnte ich dann Sequenzen in denen beispielsweise Daten erfasst werden beschleunigt ablaufen lassen und so viel Zeit sparen. Ich schätze mal Live hätte das Ganze sicher 45 Minuten gedauert. In 10 Min. einen Entwicklungsprozess vom Kundengespräch bis zur Implementierung zu zeigen, man kann sich das Tempo des Vortrags vorstellen.

P1000737 Zusammen mit Christian Binder auf der Bühne

Für alle, denen das zu schnell ging oder wer nicht dabei war, hier ist das Video nochmal zum Download. Danke an Chris. War echt eine geile Show. Das Feedback danach auf dem ATE-Stand war einfach überwältigend.

Für mich war es eine echt coole Veranstaltung und ich habe viele neue Eindrücke und Kontakte mit nach Hause genommen. Bleibt nur zu hoffen, dass das Thema TFS nun endlich die breite Masse der Entwickler erreicht - ein echt cooles Tool, das sich jeder mal anschauen sollte.

Thursday, February 21, 2008 9:46:12 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [3]    | 
 Thursday, February 14, 2008

Habe gerade einen guten Tipp gefunden. Über eine entsprechende Optionseinstellung kann man im Management-Studio beim Copy & Paste die Spaltenüberschriften der Results mit kopieren.

HP's Blog - Microsoft SQL Server Management Studio - Spaltenüberschriften fehlen beim kopieren der Abfrageergebnisse

Thursday, February 14, 2008 11:17:21 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Ich war am 13.02 und 14.02 auf der VSOne und habe dort insgesamt 4 Sessions gehalten. Für mich war es eine tolle Veranstaltung, die Resonanz auf meine Vorträge war sehr positiv und ich konnte viele interessante Diskussionen mit Teilnehmern und Sprecherkollegen führen.

P1000618

Hier nun meine Slides und den Code zum Download:

Session Requirement Management mit Team Foundation Server
Bei dieser Session habe ich vorgestellt, wie wir bei uns im Hause mit Hilfe des Team Foundation Servers Requirements verwalten. Hierbei kommt auch der artiso Workitem-Manager zum Einsatz um Workitems hierarchisch zu strukturieren.

Spezifikationsdokumente Verwalten
Spezifikationsdokumente werden oft als monolithische Worddokumente verwaltet Daraus ergeben sich eine Reihe von Problemen, die wir mit unserem Ansatz lösen, die Spezifikation in kleine Dokumente aufzuteilen und so jede einzelne Funktion zu Spezifizieren. Hierzu nutzen wir ein Word-AddIn das Bestandteil des artiso Workitem-Managers ist.

Mit 3 Schichten zum Erfolg
Das war der Titel meiner Architektur-Session. Hier habe ich zunächst den Aufbau und die Vorteile einer 3-Schicht-Architektur beschrieben. Anschließend erläuterte ich Komponentenorientierung. An einem kleinen Demo-Projekt zeigte ich die Planung und den Aufbau eines Projektes vom Architekturdesign bis zur Implementierung und demonstrierte dabei einige Best Practices aus unseren Projekten. Am Ende beschrieb ich noch die Auswirkungen für verteilte Systeme. Interessant für mich war, dass der Meister der Komponentenorientierung Ralf Westphal der Session beiwohnte uund den Vortrag mit interessanten Fragen bereicherte.

                   

XML-Serialisierung zur Persistierung von Objekten
XML-Serialisierung ist eine Technologie, mit der Objekte schnell und einfach in ein XML-Format überführt und auch wieder zurück konvertiert werden kann. Dies Technik ist nicht neu und viele Entwickler kennen und nutzen sie. Ich habe in der Session verschiedene Möglichkeiten aufgezeigt, wie sich XML-Serialisierung nutzen lässt, von der Persistierung von kompletten Datenobjekten über Konfigurationsdateien bis hin zur Optimierung der Speicherung von Listenobjekten in der Datenbank.

              

Nächste Woche bin ich dann auf dem Launch Event als ATE. Das wird sicher interessant bei diesem Mega-Event (6.500 Teilnehmer!).

Thursday, February 14, 2008 9:46:01 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 

Wir nutzen in unserem Entwicklungsprozess seit einiger Zeit den Team Foundation Server. Für das Requirement Management setzen wir Workitems ein. In der aktuellen Version des Team Foundation Servers fehlte uns dabei bisher allerdings die Möglichkeit, Workitems hierarchisch zu organisieren. Glücklicherweise verfügt der Team Foundation Server über ein leistungsfähiges API (siehe auch meinen MSDN-Webcast zu diesem Thema). Auf Basis dieser API haben wir ein Tool, den artiso Workitem Manager, entwickelt, mit dem wir nun Workitems so strukturieren können, wie wir das in unseren Projekten brauchen. Neben der hierarchischen Struktur können auch Iterationen in Baumstrukturen abgebildet werden.

Ebenfalls Bestandteil des artiso Workitem Manger ist ein Word-AddIn mit der Spezifikationsdokumente auf Funktionsebene verwaltet werden können. Damit lassen sich verschiedene Probleme mit Spezifikationsdokumente als monolithische Worddokumente lösen.

Den artiso Workitem Manager kann als Beta-Version kostenlos heruntergeladen werden. Die frei verfügbare Version ist auf 50 Workitems begrenzt.

Weitere Informationen finden sich hier.

Thursday, February 14, 2008 9:15:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [3]    |   | 
 Monday, February 04, 2008

...sollte man sich mal die AsyncPostbackTriggers anschaen, evtl. liegt das Proble dort begraben. Aber erst mal der Reihe nach.

Ich hatte eine Web-Seite, die sich plötzlich nicht mehr aufrufen lies. Ich habe unterschiedliche Fehler erhalten. Mit dem IIS wurde einfach angezeigt, dass die Seite nicht verfügbar ist, im Debug meldete Visual Studio eine OutOfMemoryException und der Developer Web Server ist gleich mal abgeschmiert. Nach einigem Suchen haben wir dann das Problem entdeckt. Auf der Seite war ein AsyncPostbackTrigger auf eine Textbox eingetragen. Diese Textbox wurde aber irgendwann entfernt. Dies scheint das oben beschriebene Problem ausgelöst zu haben.

Vielleicht hat ja mal jemend einen ähnlichen Fehler und kann ihn mit dieser Info schnell beheben.

Monday, February 04, 2008 12:23:28 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, January 30, 2008

Mit Hilfe der neuen Extension Methods in C# 3.0 können einfache Matrizenoperationen ganz einfach als Methoden auf bestehende Objekttypen eingefügt werden. Ich habe hier mal ein Beispiel mit SortedDictionaries. Diese Extension Method erlaubt das addieren zweier Matrizen.

public static void AddDictionary(this SortedDictionary<int, decimal> resultDictionary, SortedDictionary<int, decimal> insertDictionary)
{
    foreach (int key in insertDictionary.Keys)
    {
        if (!resultDictionary.ContainsKey(key))
            resultDictionary.Add(key, insertDictionary[key]);
        else
            resultDictionary[key] += insertDictionary[key];
    }
}

 

Der Aufruf gestaltet sich dann sehr einfach:

SortedDictionary<int, decimal> a = new SortedDictionary();
SortedDictionary<int, decimal> b = new SortedDictionary();

//Werte in Dictionaries einfügen

a.AddDictionary(b);

 

Ich finde die Extension Methods ne feine Sache. Natürlich sind auch beliebige andere Operationen möglich.

Wednesday, January 30, 2008 5:47:30 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2]    | 
 Saturday, January 26, 2008

Gemeinsam mit Christian Binder von Microsoft habe ich einen Webcast zum Thema Team Foundation Server SDK aufgenommen.

Thema des Webcasts:

Leider unterstützt der Team Foundation Server 2008 keine hierarchischen Workitems. Dies lässt sich mit Hilfe des TFS SDKs jedoch einfach selbst erweitern. Der Webcast vermittelt zunächst die Grundlagen zur Programmierung mit dem SDK. Im zweiten Teil wird dann gezeigt, wie das SDK genutzt werden kann, um einen hierarchischen Workitem-Manager zu erstellen.

Diese hierarchische Organisation der Workitems bietet bei der kompletten Projektorganisation enorme Vorteile. So lassen sich damit komplette Funktionsbäume aufbauen. Ich werde in Kürze hier noch verschiedene Vorgehensweisen bloggen, die auf hierarchischen Workitems basieren. Vorab hier schon ein paar begleitende Informationen zum Webcast.

Der Webcast kann hier heruntergeladen werden.

Das fertige Projekt aus dem Webcast kann hier als Solution heruntergeladen werden

Und hier habe ich noch ein Dokument, das den Aufbau der Anwendung Schritt für Schritt erläutert.

Danke noch an Chris, hat echt Spass gemacht.

Saturday, January 26, 2008 8:58:18 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [2]    | 

Des TFS SDK enthält ein Control um Workitems in Winforms zu bearbeiten. Dieses Control löst damit das Problem, wie die hochflexible Struktur von Workitems in einer eigenen Anwendung dargestellt und bearbeitet werden kann. Mit dem neuen TFS SDK 2008 gibt es allerdings ein kleines Problem beim Einsatz des Controls. Wird das Control in eine Winform eingebaut, kommt es zu einer NullReferenceException.

Object reference not set to an instance of an object.

Dieses Problem konnte ich bei mir umgehen, indem ich nicht die DLL aus dem SDK sondern aus dem TeamExplorer. Ich habe die beiden DLLS, die ich hier ausgetauscht habe hier zum Download bereitgestellt.

Saturday, January 26, 2008 8:30:05 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Thursday, January 24, 2008

Über die TFS-API kann der Namen eines TFS-Servers einfach abgefragt werden. Dazu kann folgender Code verwendet werden:

private TeamFoundationServer tfs;
NetworkCredential account = new NetworkCredential(user, password);
tfs = new TeamFoundationServer(server, account);
string ServerName = tfs.Name;

Dabei habe ich allerdings folgendes Problem festgestellt: Der Servername ist nicht konsistent. Ist der Server im Team-Explorer noch nicht geristriert, enthält der Servername auch den Port. Nachdem der Server im Team-Explorer dann registriert wurde, wird nur noch der Server-Name zurückgegeben. Das sollte man auf jeden Fall berücksichtigen, wenn man mit dem Name-Property vom tfs arbeitet.

Thursday, January 24, 2008 9:14:11 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Tuesday, January 08, 2008

Mit diesem kostenlosen Add-In lassen sich Feiertage in MS-Project und Outlook im Kalender eintragen und auch wieder entfernen.

SetHolidays - Import von Feiertagen in Outlook und Microsoft Project

Tuesday, January 08, 2008 10:52:54 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Monday, January 07, 2008

Unter Access 2003 gabe es Access-Datenbankprojekte (*.adp) mit denen man wunderbar auf bestehende SQL-Datenbanken zugreifen konnten. Sind diese mit Access 2007 verloren gegangen? Das nicht, aber sie sind jetzt gut versteckt. Um ein Datenbankprojekt mit Access 2007 anzulegen geht man wie folgt vor:

  1. Access ganz normal starten
  2. Access fragt nun nach einer Vorlage für eine neue Datei. Hier das Icon "Blank Database" auswählen.
  3. Im rechten Bereich kann man nun den Dateiname angeben. Hier den File-Dialog öffnen.
  4. In diesem Dialog kann man nun als Dateityp "Microsoft Office Access Projects" auswählen.

     image
  5. Wenn mann dann auf den "Create"-Button klickt kann man noch auswählen, ob man sich zu einer bestehenden Datenbank verbinden möchte oder eine neue anlegen will. Der Rest dürfte dann wieder vertraut erscheinen.
Monday, January 07, 2008 6:16:04 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Wednesday, January 02, 2008

Eine schöne Liste mit Tools und Erweiterungen zum Team Foundation Server und Visual Studio Team System findet sich unter http://widgets.accentient.com/

TFS-Widgets

Wednesday, January 02, 2008 3:42:50 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Aus dem Fenster mit Fehlermeldungen und Wahrnungen im Visual Studio heraus kann man direkt Workitems auf dem Team Foundation Server anlegen. Dazu einfach die entsprechende Zeile mit der rechten Maustaste anklicken und im Kontextmenü "Create Work Item" wählen.

image

Es werden automatisch Informationen in den Titel und den Verlauf übernommen, wobei meiner Meinung nach die Details eher in das Beschreibungs-Feld gehören als in den Verlauf.

image

Wednesday, January 02, 2008 2:45:07 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Sunday, December 30, 2007

Schick ist es, wenn man in der Anwendung demBenutzer die verfügbaren SQL-Server als Auswahl anzeigt. Die kann man mit folgendem Code bewerkstelligen:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SQLInstances
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dataTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();

            foreach (DataRow datarow in dataTable.Rows)
            {
                string datasource = datarow["ServerName"].ToString();
                if (datarow["InstanceName"] != DBNull.Value)
                {
                    datasource += String.Format("\\{0}", datarow["InstanceName"]);

                    ComboBox1.Items.Add(datasource);
                }

                DataGridView1.DataSource = dataTable;
            }
        }
    }
}

 

Das Beispiel gibt die verfügbaren SQL-Server in einem GridVie aus.

Um auch Zuisatzinformationen wie Version etc. zu erhalten, muss auf dem SQL-Server der SQL-Browser laufen:

clip_image001

Sunday, December 30, 2007 9:20:27 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    |   | 
 Wednesday, December 05, 2007

Der Visual Studio 2008 Team Explorer kann unabhängig vom Team Foundation Server mit folgendem Link heruntergeladen werden.

Download details: Visual Studio Team System 2008 Team Explorer

Wednesday, December 05, 2007 8:39:13 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Tuesday, December 04, 2007

Unter http://entwickler-press.de/ kann man einen Adventskalender öffnen. Hinter jedem Türchen steht ein e-Book zum kostenlosen Download. Aber Achtung das Türchen geht immer nur an dem jeweiligen Tag auf.

Tuesday, December 04, 2007 10:36:43 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 

Durch Zufall habe ich gerade herausgefunden, dass man im IE auch mehrere Startseiten eintragen kann. Einfach in der Liste mehrere zeilen mit den verschiedenen URLs eingeben. Die werden dann beim Start alle geöffnet.

image

image

Tuesday, December 04, 2007 10:35:10 AM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
 Thursday, November 29, 2007

Folgende Anforderung: Ich möchte in einer Tabelle, die über die gesamte Bildschirmbreite geht, den Inhalt einer Zelle scrollbar haben.

Mein Ansatz: Ich mache in die Tabellenzelle ein DIV mit Overflow:auto

Problem: Das funktioniert zwar im FireFox, aber nicht im IE. Der IE geht wohl her und schaut sich den Inhalt des DIVs an und macht die Tabelle dann so breit, dass der gesamte Inhalt reinpasst und berücksichtigt dabei nicht, dass das DIV ja auch scrollen könnte. Dieser Effekt tritt auf, wenn das DIV eine prozentuale Breite hat.

Folgender Code verdeutlichd das Problem. Das obere DIV verhällt sich korrekt, da es nicht in eine Tabelle eingebettet ist. Bei den unteren beiden tritt aber das beschriebene Problem auf.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ValuePlanner_2008.Web.ProductArea.WebForm1" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width: 100%; overflow: auto">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
        <br />
    </div>

    <script language="javascript" type="text/javascript">
   1:  
   2:    function fnRefreshScrollPosition(source)
   3:         {
   4:             document.getElementById("staticUnits").scrollLeft = source;
   5:         }
   6:     
</script> <div style="width: 100%"> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="staticUnits" style="width: 100%; overflow: auto;"> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> <br /> </div> </td> </tr> </table> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="units" style="width: 100%; overflow: auto;" onscroll="fnRefreshScrollPosition(this.scrollLeft);"> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<br /> <br /> </div> </td> </tr> </table> </div> </form> </body> </html>

 

Lösung 1:
Ich kann den DIVs eine feste Breite geben. Aber eigentlich will ich ja, dass der gesamte zur Verfügung stehende Platz genutzt wird und wenn dieser nicht ausreicht gescrollt wird. Um das zu erreichen müsste ich über ein Resitze-Event die Breite der Tabellenzeile ermitteln und diese dann jedesmal auf die DIVs anwenden. Das wird aber schnell sehr hässlich wenn Margins etc. mit berücksichtigt werden müssen.

Lösung 2:
Ich positioniere die DIVs einfach absolut. Dann werden Sie nicht mehr als Inhalt der Tabelle berücksichtigt und die Tabelle erstreckt sich über genau 100% der Breite. Gut nutzen kann man hier den Effekt, dass die Positionsangaben bei absoluter Poistionierung sich immer auf den Container, also in unserem Fall auf die Tabellenzelle beziehen. Ein Stolperstein dabei ist, dass das DIV natürlich auch keinen Einfluss mehr auf die Höhe der Tabellenzelle hat. Diese muss man nun explizit angeben, ich habe da einfach mal 50px vorgegeben. Der Code sieht dann so aus. Hier scrollen nun alle 3 DIVs wie gewünscht.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ValuePlanner_2008.Web.ProductArea.WebForm1" %>

<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width: 100%; overflow: auto">
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br />
        <br />
    </div>

    <script language="javascript" type="text/javascript">
   1:  
   2:    function fnRefreshScrollPosition(source)
   3:         {
   4:             document.getElementById("staticUnits").scrollLeft = source;
   5:         }
   6:     
</script> <div style="width: 100%"> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="staticUnits" style="width: 100%; overflow: auto; position: absolute"> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> <br /> </div> </td> </tr> </table> <table style="width: 100%"> <tr> <td style="width: 100%; height: 50px;"> <div id="units" style="width: 100%; overflow: auto; position: absolute;" onscroll="fnRefreshScrollPosition(this.scrollLeft);"> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc<br /> <br /> </div> </td> </tr> </table> </div> </form> </body> </html>