DataList - Si può fermare l'ultima interruzione di linea in modo un controllo scorrerà vicino alla fine
Domanda
Ho un DataList, che è impostato per flusso orizzontale che rende una serie di caselle di controllo. Ho anche un elenco a discesa, che vorrei essere reso alla fine del DataList, sulla stessa linea, come l'ultima volta nel DataList verso il basso.
E 'possibile sbarazzarsi dell'ultima interruzione di riga alla fine del DataList in modo che la discesa non rende sulla linea sotto il datalist?
[] i1 [] i2 [] i3 [] i4
[] i5 [] i6 DropDownList
Soluzione
Temo di no. Il codice di rendering per la RepeatInfo (che viene utilizzato per rendere il DataList) scrive esplicitamente un'interruzione di linea quando un layout è impostato a flusso orizzontale ed un elemento è su un limite di colonna o l'ultimo della lista. Ecco che una parte di codice:
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;
}
}
Credo che si potrebbe tentare di iniettare l'elenco a discesa in una collezione di controllo quando un elemento viene creato o legato, ma poi ci si deve sapere che è un ultimo. Ciò richiede la conoscenza conteggio totale in anticipo, prima di fare il binding dei dati.