gpt4 book ai didi

c# - 有没有办法在.net中 "parameterize"连续命名的控件

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:30 24 4
gpt4 key购买 nike

我有一个应用程序页面,其中有 52 个连续命名的文本框,用于输入和显示一年的每周需求数字。我的问题是有没有一种方法可以“参数化”控件(在本例中为文本框)名称,以便我可以遍历它们而不必列出所有 52 个?

例如,我目前正在详细列出它们,如下所示:

IEnumerable<DemandPattern> demandPattern = db.DemandPatterns.Where(x => x.DemandPatternID == demandPatternID);
txtBox1.Text = demandPattern.Where(x => x.Week == 1).Select(x => x.Demand).FirstOrDefault().ToString();
txtBox2.Text = demandPattern.Where(x => x.Week == 2).Select(x => x.Demand).FirstOrDefault().ToString();
...
txtBox51.Text = demandPattern.Where(x => x.Week == 51).Select(x => x.Demand).FirstOrDefault().ToString();
txtBox52.Text = demandPattern.Where(x => x.Week == 52).Select(x => x.Demand).FirstOrDefault().ToString();

我知道我可以将它包装在一个 for 循环中并将周 # 替换为 i 变量,但是如何处理文本框名称...

for (int i = 1; i <= 52; i++)
{
txtBoxi.Text = demandPattern.Where(x => x.Week == i).Select(x => x.Demand).FirstOrDefault().ToString();
}

我知道必须有更好的方法来做到这一点...这是一个 asp.net 网络应用程序。

最佳答案

假设它是 asp.net:

for (int i = 1; i <= 52; i++)
{
var myTb= <FormId>.FindControl("txtBox"+i.ToString()) as TextBox;
if (myTb == null) continue;
myTb.Text = demandPattern.Where(x => x.Week == i).Select(x => x.Demand).FirstOrDefault().ToString();
}

注意 - findcontrol 不是递归的。

如果你确实想要递归(这意味着文本框不是表单控件的直接子项)那么 - 使用这个递归方法:https://stackoverflow.com/a/4955836/859154

我怎么知道我是否应该递归搜索它?检查这个https://stackoverflow.com/a/15189759/859154

关于c# - 有没有办法在.net中 "parameterize"连续命名的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978177/

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