Die Lösung ist das Datasource Array in Page_PreRender neu zu laden.
Ich hole es dazu aus einer Session Variable.
Hier noch die Details mit einer netten GetListName Funktion welche die DDL durch ein Label ersetzen lässt.
Nun haben sich die Stunden dafür doch ausgezahlt ;-)
<asp:TemplateField HeaderText="ersteller" HeaderStyle-Width="120" SortExpression="ersteller_id">
<EditItemTemplate>
<asp:DropDownList ID="DDL_ersteller_ed" runat="server" DataSource="<%# ArrayListMitarbeiter %>"
DataTextField="Text" DataValueField="Value" SelectedValue='<%# Bind("ersteller_id") %>'
Width="120px" />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label_ersteller" runat="server" Text='<%# trim(GetListName(Eval ("ersteller_id"),ArrayListMitarbeiter)) %>' />
</ItemTemplate>
</asp:TemplateField>
Public Function GetListName(ByVal id%, ByVal liste As ArrayList) As String
'Umwandlung von Ersteller_id in Erstellername
'um in ItemTemplate die Dropdownlist zu ersetzen
If Not liste Is Nothing And Not IsDBNull(id) Then
Dim item As ListItem
For i = 0 To liste.Count - 1
item = liste(i)
If item.Value = id Then
Return item.Text
End If
Next
End If
Return " "
End Function