如何在asp.net c中列出框项目之间的空格#

时间:2016-03-31 11:09:08

标签: c# asp.net listbox

我有一个列表框绑定数据来自该列表框中的数据库有2个字段类别和项目字段但我希望在类别的值和这样的项目之间有一个空格

listbox2

category  items
   1        A1
   2        B2

我尝试了下面的代码,但没有得到空格

SqlDataAdapter da = new SqlDataAdapter("Select category,items from lstitems", con);
DataTable dt = new DataTable();
da.Fill(dt);

string str1 = "category";
string str2 = "items";
string str3 = str1 + "\t" + "\t" + str2;
listbox2.Items.Add(str3.ToString());


for (int i = 0; i < dt.Rows.Count; i++)
{

    string str = dt.Rows[i][0] + "\t"  + "\t" + dt.Rows[i][1].ToString();
     listbox2.Items.Add(str.ToString());

}

任何人都可以帮助我

.aspx page:

    <asp:ListBox ID="listbox2" runat="server" DataTextField="" Height="188px" Width="129px" SelectionMode="Multiple" style="margin-top: 14px"></asp:ListBox>

1 个答案:

答案 0 :(得分:0)

您可以通过在它们之间插入不可破坏的空格来分隔每个项目的两个部分。为了获得良好的列对齐,您应该将ListBox的字体设置为等宽字体类型。

在标记中:

<asp:ListBox ID="listbox2" runat="server" Font-Names="Lucida Console,Courier New" ... />

获得两个&#34;列&#34;左对齐:

const int Col1Width = 8;

for (int i = 0; i < dt.Rows.Count; i++)
{
    string part1 = dt.Rows[i][0].ToString();
    string part2 = dt.Rows[i][1].ToString();
    listbox2.Items.Add(part1.PadRight(Col1Width , '\u00A0') + part2);
}

获得两个&#34;列&#34;居中:

private string PadCenter(string source, int length, char space)
{
    int spaces = length - source.Length;
    int padLeft = spaces / 2 + source.Length;
    return source.PadLeft(padLeft, space).PadRight(length, space);
}

...

const int Col1Width = 12;
const int Col2Width = 8;

for (int i = 0; i < dt.Rows.Count; i++)
{
    string part1 = dt.Rows[i][0].ToString();
    string part2 = dt.Rows[i][1].ToString();
    listbox2.Items.Add(PadCenter(part1, Col1Width, '\u00A0') + PadCenter(part2, Col2Width, '\u00A0'));
}