我用Repeater控件做了个利用Repeater控件显示主-从关系数据表,显示如:
主:中国,
从:区域(div):北京,
         上海,
         广州,
当点中国,区域隐藏,在点显示。数据是动态添加。
--------------------------------------------------------
我的部分代码如下:
//js显示和隐藏
<script language="javascript">
function menuChange(menu)
{
if(menu.style.display=="")
{

menu.style.display="none";
}else{

menu.style.display="";
}
}
//数据调用
<table style="WIDTH: 117px; HEIGHT: 62px" cellSpacing="0" cellPadding="0" width="117" align="center" border="0">
<TBODY>
   <tr >
     <td >
        <asp:repeater id="myRep" Runat="server">
        <ItemTemplate>
<table>
<tr style="CURSOR:hand">
<td onclick="menuChange(vv);">
<%#DataBinder.Eval(Container.DataItem,"Name")%>
</td>
<td align="right" width="10%">
<img src="images/Left_ico.JPG">
</td>
</tr>
</table>
<table>
<tr>
<td>
          <asp:Repeater ID=childmyRep Runat=server datasource='<%#((DataRowView)   Container.DataItem).Row.GetChildRows("myrelation") %>'>
<ItemTemplate>
<div id="vv">
   <table> <tr>    <td> <%#DataBinder.Eval(Container.DataItem,"[\"AreaName\"]")%>   </td>
</tr>  
   </table>
</div>
</ItemTemplate> </asp:Repeater>
          </td>
        </tr>
</table> </ItemTemplate>
</asp:repeater>
       </td>
     </tr>
</TBODY>
</table>

----------------------------------
绑定数据可以显示,但显示,隐藏功能不能实现,不知道哪里做错了,有高手可以解答吗?小弟先谢谢!




解决方案 »

  1.   

    试试下面的脚本
    <script language="javascript">
    function menuChange(menu)
    {
    var dv;
    dv = document.getElementById(menu);
    if(dv.style.display=="")
    {

    dv.style.display="none";
    }else{

    dv.style.display="";
    }
    }
      

  2.   


    <td onclick="menuChange(vv);">这里不能直接使用vv,
    改成:
    <td onclick="menuChange(document.getElementById('vv'));">
      

  3.   

    1.我理解放置div的位置不对。
    2.不同国家下从会重复的DIV,各DIV的ID也应不同。<div id='vv<%#DataBinder.Eval(Container, "RowIndex")%>'> <!--生成每一个国家下的DivID不一样-->
    <table>
    <tr>
    <td>
              <asp:Repeater ID=childmyRep Runat=server datasource='<%#((DataRowView)   Container.DataItem).Row.GetChildRows("myrelation") %>'>
    <ItemTemplate>   <table><tr>   <td><%#DataBinder.Eval(Container.DataItem,"[\"AreaName\"]")%>  </td>
    </tr>  
       </table>
    </ItemTemplate></asp:Repeater>
              </td>
            </tr>
    </table>
    </div> //调到这里3.<td onclick='menuChange(vv<%#DataBinder.Eval(Container, "RowIndex")%>);'>
    4.最后,脚本也要修改。如qiekong(blue) ( ) 所言
    function menuChange(menu)
    {
    var dv;
    dv = document.getElementById(menu);
    if(dv.style.display=="")
    {
      

  4.   

    楼上等人修改的都不对,比如:<td onclick="menuChange(vv);">这里的vv不是字符串,而是当成变量名了,必须是<td onclick="menuChange('vv');">
    或者用<td onclick="menuChange(document.getElementById('vv'));">