如何从表中的多个tbody访问行?

时间:2012-04-26 09:50:16

标签: c# asp.net html-table row cells

我有这样的事情:

<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>

我使用多个&#34; tbody&#34;使用不同的ID,所以我可以删除它或随时创建它。

我想要做的是从多个&#34; tbody&#34;从表格&#34; tableId&#34;。

在C#中,如果我使用命令&#34; tableId.Rows [0] .Cells [0] .InnerHtml &#34;,我得到结果:&#34; < strong>示例thead1 &#34;。

但如果我使用&#34; tableId.Rows [3] .Cells [0] .InnerHtml &#34;,我就无法获得&#34;示例3& #34;如表行中所示,而不是它我得到一个错误,表示该行不存在或者它没有索引。

3 个答案:

答案 0 :(得分: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 = ...

答案 1 :(得分:0)

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

我认为你的行索引不正确,例如下面的

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

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

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

答案 2 :(得分:-1)

你可以使用JQuery,就像这样......

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

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

JQuery docs:

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

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