我正在动态创建几个HtmlTableRows并向它们添加单元格,如下所示:
HtmlTable dynamicTable = new HtmlTable();
. . .
// Create row 6
var row6 = new HtmlTableRow();
var cellLitCtrl_6 = new HtmlTableCell();
var cellTxtbx_6 = new HtmlTableCell();
row6.Cells.Add(cellLitCtrl_6);
row6.Cells.Add(cellTxtbx_6);
var mailStopStr = new Label
{
CssClass = "dplatypus-webform-field-label",
Text = "Mail Stop:"
};
cellLitCtrl_6.Controls.Add(mailStopStr);
boxMailStop = new TextBox
{
CssClass = "dplatypus-webform-field-input"
};
cellTxtbx_6.Controls.Add(boxMailStop);
dynamicTable.Rows.Add(row6);
// Create row 7
var row7 = new HtmlTableRow();
var cellCkbx_7 = new HtmlTableCell();
var cellLitCtrl_7 = new HtmlTableCell();
var cellTxtbx_7 = new HtmlTableCell();
row7.Cells.Add(cellCkbx_7);
row7.Cells.Add(cellLitCtrl_7);
row7.Cells.Add(cellTxtbx_7);
CheckBox ckbxEmployeeQ = new CheckBox
{
CssClass = "dplatypus-webform-field-input",
ID = "ckbxEmp",
};
ckbxEmployeeQ.Text = "Employee?";
cellCkbx_7.Controls.Add(ckbxEmployeeQ);
var SSNOrITINStr = new Label
{
CssClass = "dplatypus-webform-field-label",
Text = "ITIN:",
ID = "lblSSNOrITIN"
};
cellLitCtrl_7.Controls.Add(SSNOrITINStr);
boxSSNOrITIN = new TextBox
{
CssClass = "dplatypus-webform-field-input",
ID = "txtbxSSNOrITIN",
Width = 80,
MaxLength = 12
};
cellTxtbx_7.Controls.Add(boxSSNOrITIN);
dynamicTable.Rows.Add(row7);
此代码生成您在此处看到的内容:
但是我希望文本框(黄色文本框)能够贴合其标签(screamshot中的“SSN”,但它也可以是“ITIN”,具体取决于“Employee?”复选框的状态。)< / p>
所以我们这里有一个带有两个元素的HtmlTableRow(“Mail Stop:”标签及其“关联”文本框)和另一个带有三个元素的HtmlTableRow(复选框,标签和文本框)。
第二个HtmlTableRow显然是从上面的那个中取出布局线索(将单元格对齐到相同的X坐标值),但为什么呢?我怎么能绕过那个呢?我希望第二行看起来像这样:
|_| Employee? SSN |___________|
......不喜欢这样:
|_| Employee? SSN |___________|
如何“贴合”标签(“SSN”)和以下文本框?
我尝试将标签和文本框放在同一个HtmlTableCell中,但是当我尝试将两个控件添加到单个HtmlTableCell时,它在运行时爆炸。
在大多数情况下,所谓的“独立”HtmlTableRows彼此水平排列很好,但我不知道他们为什么/如何做到这一点,也不知道如何绕过这个通常所需的功能。
答案 0 :(得分:1)
HtmlTableCell似乎有一个ColSpan属性。您可以尝试在其他行上进行设置,以便按照您希望的方式对其进行格式化:
答案 1 :(得分:0)
这不是我特定问题的答案(我没有找到办法),但这是我最终得到的解决方案:将这些控件添加到页面而不是作为表格的一部分,但是“独立”:
// These elements were not aligning right as row 7 of the section 1 table, so I am just adding them one by one
CheckBox ckbxEmployeeQ = new CheckBox
{
CssClass = "dplatypus-webform-field-input",
ID = "ckbxEmp",
};
ckbxEmployeeQ.Text = "Employee?";
this.Controls.Add(ckbxEmployeeQ);
AddVerticalSpace();
var SSNOrITINStr = new Label
{
CssClass = "dplatypus-webform-field-label",
Text = "ITIN:",
ID = "lblSSNOrITIN"
};
SSNOrITINStr.Style.Add("padding", "2px");
this.Controls.Add(SSNOrITINStr);
boxSSNOrITIN = new TextBox
{
CssClass = "dplatypus-webform-field-input",
ID = "txtbxSSNOrITIN",
Width = 80,
MaxLength = 12
};
this.Controls.Add(boxSSNOrITIN);
AddVerticalSpace();