如何获得所有控件在HTML表格中

本文关键字:控件 HTML 表格 Label 何获得 asp | 更新日期: 2023-09-27 18:14:20

我正在更新一些旧代码,这些代码循环遍历集合并根据对象中的值设置一些UI显示属性。

不幸的是,它是这样硬编码的:

for (int i = 0 ; i < length; i++) // length is going to be 30+
{
    // do some stuff
    switch (i)
    {
        case 1:
            lbl1.Text = myVariable;
            break;
        case 2:
            lbl2.Text = myVariable;
            break;
        ....
        case 15:
            lbl15.Text = myVariable;
            break;
    }
}

(我说很不幸,因为它实际上有5行我忽略了,不管情况下做同样的事情)

现在,我可以把所有15个label控件放在一个数组中,在我的for循环中只做if (i <= 15) lblArr[i].Text = myVariable;,但我不想硬编码这个数组。如果我们添加了更多的标签,那么我们需要记得更新这个函数。

所以,我试图找到一种方法来找到一个特定的HTML元素中的所有控件,但我找不到一个工作的例子。net语言。

在winforms中,我可以简单地迭代someControl.Controls并找到适当的,但由于这些是HTML表中的标签,而不是重复器或类似的东西,我不知道如何找到它们。什么好主意吗?

如何获得所有<asp:Label>控件在HTML表格中

您可以使用FindControl方法:

for (int i = 0 ; i < length; i++) 
{
     Label ans = FindControl(string.Format("lbl{0}",i)) as Label ;
          if (ans!=null) and.Text = myVariable
}

jquery怎么样?它肯定比。net快得多。试一试……:)

$(function () {
    var myTableId = "yourTableId";
    var yourReplacementText = "yourReplacementText";
    var allSpansUnderYourTable = $('#' + myTableId).find('span');
    $.each(allSpan, function (index, item) {
        item.innerHTML = yourReplacementText;
    });
});

根据代码的复杂程度,在页面加载时检索db行,将其设置为代码背后的属性(或将其数据放在作为页面属性的对象中),然后使用代码块绑定到它可能更简洁。你也可以用这种方法去掉所有的<asp:Label>元素。

<table>
   <tr>
     <td><span><%: myObject.Property1 %></span></td>
   </tr>
</table>

这样你就可以使所有的绑定都是声明性的,并且不需要过程代码背后的逻辑来循环和设置东西。