1

我有这样的事情:

<table id="tableId" runat="server">
<thead>
    <tr>
        <th>Example thead1</th>
        <th>Example thead2</th>
   </tr>
</thead>
<tbody id="tb0">
    <tr>
        <td>Example 1</td>
        <td>Something</td>
   </tr>
</tbody>
<tbody id="tb1">
    <tr>
         <td>Example 2</td>
         <td>Something</td></tr>
</tbody>
<tbody id="tb2">
    <tr>
        <td>Example 3</td>
        <td>Something</td>
   </tr>
</tbody>
</table>

我使用多个具有不同 ID 的“tbody”,因此我可以随时删除或创建它。

我想做的是从表“tableId”中的多个“tbody”中获取每一行。

在 C# 中,如果我使用命令“ tableId.Rows[0].Cells[0].InnerHtml ”,我会得到结果:“ Example thead1 ”。

但是,如果我使用“ tableId.Rows[3].Cells[0].InnerHtml ”,我无法在表格行中获得“示例 3”,而不是它,我得到一个错误,指出该行没有存在或超出索引。

4

3 回答 3

0

使 tbody 元素成为服务器控件。

<tbody id="tb2" runat="server">
    <tr>
        <td>Example 3</td>
        <td>Something</td>
   </tr>
</tbody>

然后根据需要切换可见性:

tb2.Visible = true / false;

根据评论:

设计者可能不会创建对tb1, tb2, tb3控件的引用,因为它们是tableId. 如果是这样:

var tb2 = tableId.FindControl("tb2");
tb2.Visible = ...
于 2012-04-26T09:52:07.550 回答
0

我已经测试了你的代码。并发现tableId.Rows[3].Cells[0].InnerHtml将始终给出示例 3 ..根据您的 aspx 标记代码,这是正确的。

我认为您的位置行索引不正确,即如下所示

表结构中不存在的tableId.Rows[4].Cells[0].InnerHtml 。

这就是为什么你得到指定参数的错误超出了有效值的范围。参数名称:索引

希望这会帮助你......快乐的编码......

于 2012-04-26T10:23:57.720 回答
-1

你可以使用 JQuery,类似这样的东西....

$('tbody', '#tableid');

但我想这取决于你想用它们做什么,以及在哪里

jQuery 文档:

选择器: http: //api.jquery.com/category/selectors/

遍历:http ://api.jquery.com/category/traversing/

于 2012-04-26T10:02:00.783 回答