我正在尝试在我的代码后面动态创建一个表。我的问题是我有多少控件要添加到每个TableRow,之后我想将TableRow添加到表中然后开始一个新行。这是我不远处的代码,但它只添加了一行,并且不会将任何控件移动到单独的新行。
public void FillTable(string DB, int? appID, string function, int? rID, string UserId, int ControlsperRow)
{
OneEvaDataContext datacontext = new OneEvaDataContext();
var results = datacontext.sp_Build_Menu_Field_Names(DB, appID, function, rID);
int controlCount = 0;
TableRow tr = new TableRow();
foreach (sp_Build_Menu_Field_NamesResult result in results)
{
TableCell tcLabel = new TableCell();
TableCell TcControl = new TableCell();
Control control = new Control();
control = DynamicControlReturn.ReturnControl(result.Param_Name, result.Build_Options_Type_NAME, UserId);
control.ID = "control" + controlCount.ToString();
_controlClientIDList.Add(control.ClientID);
tcLabel.Text = result.Param_Label;
TcControl.Controls.Add(control);
tr.Cells.Add(tcLabel);
tr.Cells.Add(TcControl);
controlCount = controlCount + Convert.ToInt32(result.TD_Len);
if (controlCount == ControlsperRow)
{
base.Controls.Add(tr);
controlCount = 0;
}
}
}
我原本以为只在我完成构建该行时才执行.Add会起作用,但我想因为我使用相同的TableRow“tr”它只是放入一行。
编辑:在上下文基础中是我的类,如下所示:
public class Dynamic_Search_Table : System.Web.UI.WebControls.Table
{
答案 0 :(得分:0)
移动
TableRow tr = new TableRow();
进入foreach,并添加
this.Add(tr);
在foreach结束时。
修改:更改
if (controlCount == ControlsperRow)
{
base.Controls.Add(tr);
controlCount = 0;
}
到
if (controlCount == ControlsperRow)
{
base.Controls.Add(tr);
controlCount = 0;
tr = new TableRow();
}