gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:01:46 25 4
gpt4 key购买 nike

我想知道是否可以用一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com