间距复选框列表标签

spacing checkboxlist label

我正在尝试动态创建一个外观非常具体的复选框列表。 这段代码正确添加了复选框列表,但是间距全错了:

foreach (string s in fieldTypes)
{
    dt = sqlDataLayer.getInterpretationField(Guid.Parse(id), s);
    CheckBoxList cbl = new CheckBoxList();
    foreach (DataRow dr in dt.Rows)
    {
        string fieldName = dr["fieldName"].ToString();
        string displayName = dr["displayName"].ToString();
        string spacer = "";
        int length = fieldName.Length + displayName.Length;
        length = 50 - length;
        for (int i = 0; i < length; i++)
        {
            spacer += "&nbsp;";
        }
        cbl.Items.Add(new ListItem(fieldName+spacer+displayName));
    }
    dvContent.Controls.Add(cbl);
    break;    //This is just because I just wanna test one loop.. I'll remove it later
}

想要的结果:

[ ] Test            Test
[ ] LongerTest      Test
[ ] MuchLongerTest  LongerTest

我得到的是:

[ ] Test           Test
[ ] LongerTest        Test        //These aren't the exact values and lengths,
[ ] MuchLongerTest   LongerTest   //but it's roughly my result.

如何正确设置间距?有什么方法可以添加带有两个标签的 ListItem 吗?其他一些方法?

有两种解决方案:

  1. 您可以编写一个继承自 CheckBoxList 的控件并定义覆盖 RenderControl 的布局

  2. 将 CheckBoxList 替换为 Gridview/Repeater 并使用列,或者使用多个 CheckBoxes 并将它们放入所需的结构中。