无法从服务器端代码创建多个行表

时间:2010-02-22 17:30:24

标签: c# asp.net

我正在尝试在我的代码后面动态创建一个表。我的问题是我有多少控件要添加到每个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
    {

1 个答案:

答案 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();
}