繁体   English   中英

ASP.NET中的可折叠中继器

[英]Collapsable repeater in ASP.NET

我有一个中继器,当前显示这些县中的县和乡镇列表。 除了具有不同的RowFormat属性外,在转发器中对县记录和乡镇记录的处理也相同。 每个记录还具有唯一的ID和要显示的单位(无论是乡镇还是县)。 还有一列供乡镇参考其上级县。 我利用中继器上的AlternatingItemTemplate选项在每个乡镇显示交替的颜色。

我希望能够在每行上单击“ +”或“-”图像时显示和隐藏乡镇行。 为了将此图像仅添加到县行中,我在绑定的DataTable中添加了另外一列,该列为空(对于乡镇而言)或包含带有“ +”图像的表格单元:

row["Image"] = "<img src='/includes/plus.gif' />";

这基本上就是我所追求的:

替代文字

当用户单击县上的“ +”或“-”图像时,我曾尝试调用JavaScript函数,但是我不确定如何从javascript调用中访问所有子城镇以隐藏它们。 我还需要切换县的“图像”字段以显示相反的图像(即从“ +”->“-”开始,反之亦然)。

<TABLE width="100%" style="border: thin solid #A3A3A3;" cellspacing="0px">
   <asp:repeater id="RepeaterUnits" Runat="server">
    <ItemTemplate>
        <tr '<%# (DataBinder.Eval(Container.DataItem, "RowFormat")) %>' >
            <td style="width: 16px" onclick='ClickCollapse(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);'>
                <%# (DataBinder.Eval(Container.DataItem, "Image")) %>
            </td>
            <td onclick='ClickUnit(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);' width="100%">
                <%# (DataBinder.Eval(Container.DataItem, "UnitName")) %>
            </td>
        </tr>
    </ItemTemplate>
    <AlternatingItemTemplate>
        <tr '<%# (DataBinder.Eval(Container.DataItem, "AltRowFormat")) %>'>
            <td style="width: 16px" onclick='ClickCollapse(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);'>
                <%# (DataBinder.Eval(Container.DataItem, "Image")) %>
            </td>
            <td onclick='ClickUnit(<%# (DataBinder.Eval(Container.DataItem, "UnitID")) %>);' width="100%">
                <%# (DataBinder.Eval(Container.DataItem, "UnitName")) %>
            </td>
        </tr>
    </AlternatingItemTemplate>
</asp:repeater>

我曾考虑过可能在数据网格中为每个县使用一个转发器来迭代每个县的乡镇,但是到目前为止,我将每个记录存储在同一数据表中,因此必须将县和乡镇划分为多个表。 谁能提出一种更好地解决此问题的方法? 我对ASP.NET相对较新,因此我不知道可以使用的所有选项。

您可以将乡镇放在div内,然后简单地显示/隐藏该div吗?

如果以“县,乡”为例,对带有两列的表格进行排序,则可以有效地遍历该表,并且每当有新县成立时,您都会启动一组新的乡。

您可以在后面的代码中使用Repeater的ItemDataBound事件来按行执行所需的任何格式设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM