我有一个中继器,当前显示这些县内的县和乡的列表。除了具有不同的RowFormat属性外,在中继器中对县记录和乡记录的处理方式相同。每条记录还具有唯一的id和要显示的单位(无论是乡还是县)名称。还有一栏供各乡镇参考其所属县。我利用中继器上的AlternatingItemTemplate选项显示每个城镇的交替颜色。
我想要能够显示和隐藏乡镇行,当'+‘或'-’图像点击每一行。为了仅将此图像添加到县行,我在绑定的DataTable中添加了一个额外的列,该列或者为空(对于乡镇),或者包含一个包含'+‘图像的表单元格:
row["Image"] = "<img src='/includes/plus.gif' />";这基本上就是我想要的:

我尝试过在用户单击县上的'+‘或'-’图像时调用JavaScript函数,但我真的不确定如何从javascript调用中访问所有的儿童城镇以隐藏它们。我还需要切换countiy的Image字段来显示相反的图像(例如,从'+‘-> '-’开始,反之亦然)。
<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比较陌生,所以我并不了解所有可用的选项。
发布于 2010-01-12 03:55:24
你能把城镇放在一个div里面,然后简单地显示/隐藏那个div吗?
发布于 2010-01-12 04:48:21
如果以" County,Township“为例,对表中的两列进行排序,则可以有效地遍历该表,每次有一个新的County时,您就会启动一个新的Township组。
您可以在代码后台中使用Repeater的ItemDataBound事件,以每行为基础执行所需的任何花哨格式。
https://stackoverflow.com/questions/2044444
复制相似问题