2009-04-01 7 views
0

Ich habe eine DataList, die auf Horizontal Flow gesetzt ist, die eine Reihe von Kontrollkästchen rendert. Ich habe auch eine Drop-Down-Liste, die ich am Ende des Datenträgers in der gleichen Zeile wie das letzte Mal in der Datenliste gerendert werden möchte.DataList - Können Sie den letzten Zeilenumbruch stoppen, so dass ein Steuerelement neben dem Ende fließt

Ist es möglich, den letzten Zeilenumbruch am Ende des Datenträgers zu entfernen, damit das Dropdown-Menü nicht in der Zeile unterhalb des Datenzeichners angezeigt wird?

[] i1 [] i2 [] i3 [] i4 
[] i5 [] i6 DropDownList 

Antwort

0

Ich fürchte nicht. Der Rendering-Code für die RepeatInfo (die zum Rendern der DataList verwendet wird) schreibt explizit einen Zeilenumbruch, wenn ein Layout auf horizontalen Fluss und ein Element auf einer Spaltengrenze oder der letzte in der Liste festgelegt wird. Hier, dass ein Teil des Codes:

private void RenderHorizontalRepeater(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl) 
{ 
    ... 
    if (indexInColumn == repeatColumns || itemIndex == repeatedItemCount - 1) 
    { 
     if (isTableLayout) 
     { 
      writer.RenderEndTag(); 
     } 
     else if (repeatColumns < repeatedItemCount) 
     { 
      if (this.EnableLegacyRendering) 
      { 
       writer.WriteObsoleteBreak(); 
      } 
      else 
      { 
       writer.WriteBreak(); 
      } 
     } 
     indexInColumn = 0; 
    } 
} 

Ich nehme an, Sie könnten versuchen, die Dropdown-Liste in eine Steuer Sammlung zu injizieren, wenn ein Element erstellt oder gebunden, aber dann würden Sie müssen wissen, dass es eine letzte. Dies erfordert die Kenntnis der Gesamtanzahl im Voraus, bevor Sie die Datenbindung durchführen.

+0

Danke, am Ende habe ich die Anzahl der Spalten Attribut in der Datenliste entfernt und ein Literal mit einem Zeilenumbruch in ItemDataBind auf der nth ItemIndex hinzugefügt – HadleyHope