DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Datagrid Spaltenbreite festlegen

Das Datagrid ist eien feine Sache, aber wenns ins Detail geht, tauchen oft Fragen auf wie : wie kann ich die Breite der Spalten (zb Textbox) festlegen?

Zunächst einmal muss die Automatik abgedreht werden mit dem Attribut Autogenerate oder über den Datagrid Assistenten und die Checkbox "Spalten automatisch zur Laufzeit erstellen".

<asp:DataGrid id="DataGrid1" runat="server"    

AutoGenerateColumns="False">


Dann muss man natürlich die Spalten manuell erzeugen. Dafür gibt es zwei Möglichkeiten die Bound Columns oder die Template Columns.

Wir beginnen einmal mit den Code etwas kürzeren Bound Columns. Der Ansatz ist, die Breite einfach über die Breite der Kopf Zeile einzustellen. Die Tabellespalte ist so immer so breit wie die erste Spalte. Das kann man auch über den Assistenten sehr einfach machen.

Damit wird in der ASPX Seite folgender HTML COde erzeugt. Hier kann man auch gleich noch ein paar andere Formatierungen mitgeben wie Zentrierung.

<HeaderStyle HorizontalAlign="Center" Width="300px"
VerticalAlign="Middle"></HeaderStyle>


Abweichend von der Überschrift kann über die Attribute der Boud Column auch Einfluss auf Design genommen werden. So könntenman eine Style Klasse laden in der die Definiton der Breite steckt oder einfach über das Zusatzelement Itemstyle.

<asp:BoundColumn HeaderText="Zwei">
<HeaderStyle Width="100px"></HeaderStyle>
<ItemStyle Width="600px"></ItemStyle>
</asp:BoundColumn>

Im nächsten Schritt kann auch das Design (Breite) von Textboxen oder anderen Controls im Edit Modus geändert werden. So ist es auch möglich mehr als ein Control in einer Spalte abzulegen, aber nur mit Template COntrols. Am einfachsten geht es über den Assistenten aus einer Bound Column eine Template Column zu machen. Dies finden Sie im Eigenschaftsgenerator als Hyperlink unten "Konvertiert die Spalte in eine Vorlagenspalte"
Dann kann mit den üblichen Attributen der Controls das Deisgn erstellt werden.
<asp:TemplateColumn HeaderText="Zwei">
<ItemTemplate>
<asp:Label runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" width="600" maxlength="600"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>


Wenn man diese Entscheidungen nicht dem Designer überlassen möchte, oder je nach Daten die Formatierung vornehmen will, muss man zur Laufzeit die Breite setzen.
Dazu kann man sich in verschiedenen Events des Datagrids einklinken wie z.B. ItemCreated oder Itemdatabound. Dort holt man sich dann die Textbox per Findcontrol oder Index und setzt einfach die Breite.

Private Sub DataGrid1_PreRender(s As Object, e As EventArgs)
If DataGrid1.EditItemIndex > -1 Then
  Dim tbx As TextBox
  tbx = CType(DataGrid1.Items(DataGrid1.EditItemIndex).Cells(0).Controls(0),
TextBox)
  tbx.Width = Unit.Parse("1cm")
End If
End Sub

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 18.07.2003
  Gültig bis: 16.10.2003
3 Ratings
Bewertung: 66,7%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG