リストボックスに2つの列を表示するにはどうすればよいですか?
9 に答える
リストボックスは、複数列のデータを表示するようには設計されていません。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を使用して独自のロールを作成することもできます。
リストボックスで列を使用する場合は、配置に基づいて使用する必要があります。
例えば:
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));
以下のこのコードの私自身の実装の出力:
使用するフォントは等幅フォントである必要があることに注意してください。そうしないと、文字間の間隔が変化するために配置が混乱します(これにより、文字列が長くなるほど誇張されます)。
独自のコントロールを作成するか、リストビューコントロールを使用する必要があるようです。
リストビューを使用すると、複数列のリストボックスの代替として最適です。
Nick Craverがすでにコメントしているように、ListViewはおそらく複数列の情報の適切なコントロールではありません。
リストをハッキングして2つの列があるように見せかけるのではなく、DataGridViewを使用する方がよい場合があります。セットアップ、フォーマットが簡単になり、データははるかに柔軟な方法で保持されます。
DataGridViewsは、オブジェクトのリストをデータソースとして割り当てることもサポートしています。
私が正しく理解していれば、データ列を水平に表示する必要があります。これは、を使用して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>
ASP.NETの複数列のドロップダウンボックスを参照してください