我有一个转发器,目前显示这些县内的县和乡镇列表。除了具有不同的RowFormat属性之外,县记录和乡镇记录在重复器中被视为相同。每条记录还有一个唯一的ID和单位(无论是乡镇还是县)名称来显示。乡镇还有一个专栏来引用他们的父县。我利用转发器上的AlternatingItemTemplate选项在每个乡镇上显示交替的颜色。
我希望能够在每行单击“+”或“ - ”图像时显示和隐藏乡镇行。要将此图像仅添加到县行,我已向绑定的DataTable添加了一个额外的列,该列为空(对于乡镇)或包含包含“+”图像的表格单元格:
row["Image"] = "<img src='/includes/plus.gif' />";
这基本上就是我所追求的:
当用户点击县上的“+”或“ - ”图像时,我尝试调用JavaScript函数,但我不确定如何从javascript调用中访问所有子城镇以隐藏他们。我还需要切换countiy的Image字段来显示相反的图像(即来自'+' - &gt;' - ',反之亦然)。
<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的新手,所以我不知道我可以使用的所有选项。
答案 0 :(得分:1)
你能把乡镇放在一个div中,然后简单地显示/隐藏那个div吗?
答案 1 :(得分:0)
如果您使用“县,乡镇”作为示例对两个列进行排序,您可以有效地循环遍历它,每次有一个新的县,您就会开始一个新的乡镇小组。
您可以在后面的代码中使用Repeater的ItemDataBound事件来执行每行所需的任何花哨格式化。