我试图动态创建一个具有非常特定外观的复选框列表。 此代码正确添加了checkboxlist,但间距完全错误:
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 += " ";
}
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?还有其他方法吗?
答案 0 :(得分:3)
有两种解决方案:
您可以编写一个继承自CheckBoxList的控件并定义覆盖RenderControl的布局
用Gridview / Repeater替换CheckBoxList并使用列,或者使用manyCheckBox,并将它们放在所需的结构中。