c# - 在代码隐藏中动态引用控件(表)

标签 c# asp.net datatable

我想知道是否可以用一个 foreach 填充不同的表。

我有 5 个表 tbl0、tbl1、tbl2、tbl3、tbl4,目前我在每个表中使用一次下面的代码。

//fill *dtTable* with SQL

foreach (DataRow dr in dtTable.Rows)
{         
   TableHeaderRow tHRow = new TableHeaderRow();
   TableHeaderCell tHeader = new TableHeaderCell();
   tHeader.Text = dr.Field<string>("Loc");
   tHRow.Cells.Add(tHeader);
   tbl0.Rows.Add(tHRow);

   //fill 'hl' with sql

   tCell.Controls.Add(hl);
   tRow.Controls.Add(tCell);
   tbl0.Rows.Add(tRow);
}

我想到了类似的东西:

 //fill *dtTable* with SQL    

 int i = 0;
 foreach (DataRow dr in dtTable.Rows)
 {         
    string TABLENAME = "tbl"+i; 

    TableHeaderRow tHRow = new TableHeaderRow();
    TableHeaderCell tHeader = new TableHeaderCell();
    tHeader.Text = dr.Field<string>("Loc");
    tHRow.Cells.Add(tHeader);

    (Table)this.FindControl(TABLENAME).Rows.Add(tHRow); // does not funktion, just an idea

    //fill 'hl' with sql

    tCell.Controls.Add(hl);
    tRow.Controls.Add(tCell);

    (Table)this.FindControl(TABLENAME).Rows.Add(tRow); // does not funktion, just an idea
    i++;
}

我怎样才能拥有一种动态的TableName,这样我就不需要五次相同的代码了?

最佳答案

另一种方法:

int i = 0;
var tables = new List<Table>();
tables.Add(tbl0);
tables.Add(tbl1);
tables.Add(tbl2);
tables.Add(tbl3);
tables.Add(tbl4);


foreach (DataRow dr in dtTable.Rows)
{   
    // validation
   if(i>tables.Count)
   {
      return;
   }

   var tbl in tables[i];
   TableHeaderRow tHRow = new TableHeaderRow();
   TableHeaderCell tHeader = new TableHeaderCell();
   tHeader.Text = dr.Field<string>("Loc");
   tHRow.Cells.Add(tHeader);

   tbl.Rows.Add(tHRow);

   //fill 'hl' with sql

   tCell.Controls.Add(hl);
   tRow.Controls.Add(tCell);

   tbl.Rows.Add(tRow);
   i++;
}

我不喜欢使用 (Table)this.FindControl(TABLENAME).Rows.Add(tRow); 因为也许将来您会更改表的 ID,这样您就可以也必须改变功能。

关于c# - 在代码隐藏中动态引用控件(表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891330/

相关文章:

c# - X509Certificate.LoadStoreFromFile() : The computer must be trusted for delegation and the current user account must be configured to allow delegation

c# - ASP.NET 中的 javascript PageMethods - 传递参数

angular - 防止angular7中的默认上下文菜单

shiny - R Shiny : How to open a popup window and show a graph that depends on row click event of DT datatable

c# - 浏览 FindContours 方法找到的轮廓层次结构?

c# - ASN.1 对象标识符值大于 128

c# - gridview 排序不适用于数字

asp.net - Page.Load是页面生命周期中最早添加Response.AppendHeader的点吗?

asp.net - .NET MVC2 Master 上的多个部分 View ,也可通过 AJAX 单独加载

javascript - 多数据表切换列