中继器扩展表行asp.net

时间:2015-12-22 11:56:15

标签: asp.net repeater

我正在尝试使用带有标题的表行以及所有这些,当用户单击任何行时,该行应该展开..

这有效:

<asp:Repeater runat="server" ID="repeaterShowCases">
            <HeaderTemplate>
                <table class="table table-responsive">
                    <tr>
                        <th>Id</th>
                        <th>Date</th>
                        <th>Title</th>
                        <th>Assigned User</th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <h1 class="click">
                            <asp:Label runat="server" ID="LabelId" Text='<%# DataBinder.Eval(Container.DataItem,"id").ToString() %>'></asp:Label>

                            <asp:Label runat="server" ID="lblCreatedDate" Text='<%# DataBinder.Eval(Container.DataItem,"CreatedDate").ToString() %>'></asp:Label>
                        </h1>

                        <div class="expand">
                            <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Title").ToString() %>'></asp:Label>
                            <asp:Label ID="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"AssignedToUser").ToString() %>'></asp:Label>
                        </div>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>

但是这个剂量:

    <asp:Repeater runat="server" ID="repeaterShowCases">
                <HeaderTemplate>
                    <table class="table table-responsive">
                        <tr>
                            <th>Id</th>
                            <th>Date</th>
                            <th>Title</th>
                            <th>Assigned User</th>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                        <tr>
                    <h1 class="click">
                        <td>
                            <asp:Label runat="server" ID="LabelId" Text='<%# DataBinder.Eval(Container.DataItem,"id").ToString() %>'></asp:Label>
                        </td>
                        <td>
                            <asp:Label runat="server" ID="lblCreatedDate" Text='<%# DataBinder.Eval(Container.DataItem,"CreatedDate").ToString() %>'></asp:Label>
                        </td>
                    </h1>

                    <div class="expand">
                        <asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Title").ToString() %>'></asp:Label>
                        <asp:Label ID="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"AssignedToUser").ToString() %>'></asp:Label>
                    </div>
                </tr>               
 </ItemTemplate>
            </asp:Repeater>

我看起来像表数据杀死扩展函数..

Becasue我希望它看起来像一张桌子,并获得有关特定行的更多信息,用户可以点击它,行会随信息扩展..

我知道我还没有所有标题的数据,但这就是我现在正在测试的内容。

1 个答案:

答案 0 :(得分:0)

以下是第二个代码段中的行标记(标记为左侧):

<tr>
    <h1>
        <td></td>
        <td></td>
    </h1>
    <div></div>
</tr>

这是表的错误标记。 tr不能将任意标记作为子标记,只有td在那里有效。看起来这种混合打破了浏览器处理此表的方式。

然而,您的第一次尝试是有效的标记,因此您应该考虑采用这种方法。或者,如果由于某种原因它不适合您,您的选择是:

  1. 摆脱表格并渲染div和h1中的所有内容。需要一些努力才能正确对齐,但在标记方面不会限制表格。

  2. 使用colspans和rowspans,可能会根据需要添加交替的行。

  3. 此外,您是否需要页脚模板才能关闭</table>