【问题标题】:Multiple columns in List box control列表框控件中的多个列
【发布时间】:2010-04-15 15:00:33
【问题描述】:

如何在列表框中显示两列?

【问题讨论】:

  • 简短回答...你不能,这不是控件(至少是框架中的那个)的设计方式,你能解释或说明你所追求的更多吗?
  • @xrx215:如果唯一的目的是明智地显示数据列 - 意味着没有用户交互 - 那么您可以添加空格以将数据呈现为列;只是想……!
  • 嗨.. 我需要显示来自 Web 服务的名称和描述列。这些列应该可以在列表框中滚动。

标签: c# asp.net listbox multiple-columns


【解决方案1】:

列表框不是为显示多列数据而设计的。即使是 Windows 窗体版本也不直接支持这种数据显示。

您的要求不明确,但最简单的方法是使用GridView 控件。它为您提供了很多开箱即用的功能,您可以非常轻松地将其扩展到更多列。如果您需要对外观或功能进行更多控制,可以改用DataList

要获得滚动功能,您可以使用滚动<div> 或在适当的情况下简单地使用 GridView 的分页机制。

【讨论】:

    【解决方案2】:

    你可以把它排成两列

    new ListItem("blah1".PadRight(10, ' ') + "blah2");
    

    如图所示:http://articles.dotheweb.net/post/Formatting-columns-in-a-ListBox-of-ComboBox.aspx

    此外,您也可以使用 DataList 自行滚动。

    【讨论】:

      【解决方案3】:

      如果要在 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));  
      

      我自己实现的以下代码的输出:

      请记住,您使用的字体必须是等宽字体,否则对齐会由于字符之间的可变间距而混乱(这会夸大字符串的长度)。

      【讨论】:

        【解决方案4】:

        看起来你应该编写自己的控件,或者你可以使用列表视图控件。

        【讨论】:

          【解决方案5】:

          使用列表视图是多列列表框的完美替代

          【讨论】:

            【解决方案6】:

            正如 Nick Craver 已经评论的那样,ListView 可能不是多列信息的正确控件。

            与其让您的列表看起来好像有两列,不如使用DataGridView 可能是一个更好的主意。设置和格式化会更容易,并且您的数据将以更灵活的方式保存。

            DataGridViews 也支持assigning Lists of objects as datasources,如果这会让事情变得更容易的话。

            【讨论】:

              【解决方案7】:

              如果我理解正确,您希望数据列水平显示。这可以通过使用DataList 并使用指定的重复列将RepeatDirection 设置为“水平”来实现。 例如:

              <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" CellSpacing="10" >
              

              【讨论】:

                【解决方案8】:

                如果您引用工具包并添加 wrapPanelOrientation ,则可以并排多个项目;) 它会列出看起来像

                1stItem      2ndItem
                
                3rdItem      4thItem .. ect..
                
                ListBox.ItemsPanel>
                
                ItemsPanelTemplate>
                    toolkit:WrapPanelOrientation="Horizontal"FlowDirection="LeftToRight"ItemWidth="220"ItemHeight="60"/>
                
                /ItemsPanelTemplate>
                
                /ListBox.ItemsPanel>
                
                /ListBox>
                

                【讨论】:

                  【解决方案9】:

                  【讨论】:

                  • 没有多列列表框这样的控件
                  • @xrx215:如果您阅读这篇文章,您会了解到MultiColumnListBox 是一个子类 控件。 >这是一个所有者绘制的列表框继承自System.Windows.Forms.ListBox。它的主要功能是将每个项目格式化为多列。这是其他人的建议。
                  • 问题被标记为 asp.net,链接不相关。
                  • @xrx215,不在 HTML 中,但我们所说的列表框实际上是下拉组合框 (DDCB),用作单选按钮(单个、互斥的选择)或复选框的替代品(多选),几乎所有其他 GUI 都有真正的多列列表框,带有分页和滚动条。在 HTML 中,我们坚持使用 PHPMyAdmin 样式。
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-20
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多