I'm afraid not. The rendering code for the RepeatInfo (which is used to render the DataList) explicitly writes a line break when a layout it set to horizontal flow and an item is on a column boundary or the last in the list. Here that part of code:
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;
}
}
I suppose you could try to inject the drop down list into a control collection when an item is created or bound, but then you'd have to know that it a last one. This requires knowing total count upfront, before you do the data bind.