如何在列表框中显示两列?
9 回答
您可以将其排列为好像数据在 2 列中
new ListItem("blah1".PadRight(10, ' ') + "blah2");
如此处所示:http: //articles.dotheweb.net/post/Formatting-columns-in-a-ListBox-of-ComboBox.aspx
此外,您可以使用 DataList 自行开发。
如果要在 ListBox 中使用列,则必须基于对齐方式。
例如:
String columns = "{0, -55}{1, -35}{2, -35}";
ListBox1.Items.Add(String.Format(columns, "Filename", "Selected DateModified", "Vault DateModified"));
ListBox1.Items.Add(String.Format(columns, fileName, datetime1, datetime2));
我自己的代码实现的输出如下:
请记住,您使用的字体必须是等宽字体,否则对齐会由于字符之间的可变间距而混乱(这会夸大字符串的长度)。
看起来您应该编写自己的控件,或者您可以使用 listview 控件。
使用列表视图它是多列列表框的完美替代品
正如 Nick Craver 已经评论的那样,ListView 可能不是多列信息的正确控件。
与其让您的列表看起来好像有两列,不如使用DataGridView可能是一个更好的主意。它会更容易设置、格式化,并且您的数据将以更灵活的方式保存。
DataGridViews 还支持将对象列表分配为数据源,如果这会使事情变得更容易的话。
如果我理解正确,您希望数据列水平显示。这可以通过使用 a来实现,DataList
并将RepeatDirection
指定的重复列设置为“水平”。例如:
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" CellSpacing="10" >
如果您引用工具包并添加 wrapPanelOrientation ,则可以并排多个项目;)它将列出如下
1stItem 2ndItem
3rdItem 4thItem .. ect..
ListBox.ItemsPanel>
ItemsPanelTemplate>
toolkit:WrapPanelOrientation="Horizontal"FlowDirection="LeftToRight"ItemWidth="220"ItemHeight="60"/>
/ItemsPanelTemplate>
/ListBox.ItemsPanel>
/ListBox>