<asp:datalist id="dlDQue" runat="server">
<ItemTemplate>
<table>
       //这个table里的是问题并且有个btuuton id="btnShow" CommandName="Show"
         
</table>
<div id="dv" runat="server">
<asp:DataList ID="dlAnswer" Runat="server" DataSource='<%# GetAnswersById(DataBinder.Eval(Container,"DataItem.DQueId").ToString())%>' OnItemCommand="dlAnswer_ItemCommand">
</datalist>//这个datalist里是单个问题的所有回答
<table>
     //这个table里放的是提交回答的信息和提交按钮
</table>
</div>
</ItemTemplate>
<datalist>
我的问题:如何做到点btnshow按钮,来显示知隐藏div

解决方案 »

  1.   

    void Item_Command(Object sender, DataListCommandEventArgs e) 
    {
      if (e.CommandName == "Show")
      {
       HtmlGenericControl ctl = e.Item.FindControl("dv") as HtmlGenericControl;
       ctl.Visible  = true;
      }
    }
      

  2.   

    我用了一下不好使,不知道我哪儿错了.但我现在用了个panel就好用了.谢谢!
    我还有点问题:在dlAnswer_ItemCommand这个事件里怎么能取到第二个table里的控件.
      

  3.   

    在dlAnswer_ItemCommand这个事件里怎么能取到第二个table里的控件
    --------------------------
    使用dlAnswer.Parent.FindControl方法试试。
      

  4.   

    <asp:datalist id="dlDQue" runat="server">
    <ItemTemplate>
    <table>
           //这个table里的是问题并且有个btuuton id="btnShow" CommandName="Show" onclick="javascript:dv<%# Eval("dlDQue_id") %>.style.display='none';" 
             
    </table>
    <div id="dv<%# Eval("dlDQue_id") %>">
    <asp:DataList ID="dlAnswer" Runat="server" DataSource='<%# GetAnswersById(DataBinder.Eval(Container,"DataItem.DQueId").ToString())%>' OnItemCommand="dlAnswer_ItemCommand">
    </datalist>//这个datalist里是单个问题的所有回答
    <table>
         //这个table里放的是提交回答的信息和提交按钮
    </table>
    </div>
    </ItemTemplate>
    <datalist>
    当然,你直接给runat=server的button加上onclick="javascript:dv<%# Eval("dlDQue_id") %>.style.display='none';" ,会出错的.你可以通过数据绑定,在cs代码中,给每一行的该按钮加上这么一个onclick事件<input type=button onclick="javascript:div2.style.display='none';" value="测试" />  
            
        
        <div id="div2">
        abcabcabcabcabcabcabcabcabcabcabc
        
        </div>
      

  5.   

    我用了一下不好使,不知道我哪儿错了.但我现在用了个panel就好用了
    ------------------- 
    这个div必须是runat="server",我不太记的DIV转成服务器端控件是HtmlGenericControl 还是什么,不过用panel行就用panel吧。
      

  6.   

    只要你的table中的控件都是服务器端控件 根据ID值就能找到 如找Button bt1
    则在itemDataBind事件中写:
    Button bt= e.Item.FindControl("tb1");
    找到的是那一行的button实例
      

  7.   

    我还有点问题:在dlAnswer_ItemCommand这个事件里怎么能取到第二个table里的控件.======到底哪个 table 哦?
      

  8.   

    感谢各位,问题解决了.像BearRui(AK-47) 的方法改成dlAnswer.Parent.Parent.FindControl
      

  9.   

    <script type="text/javascript">
        function showsub(sid)
        {
            whichEl = eval("alsub" + sid);
            if (whichEl.style.display == "none")
            {
                eval("alsub" + sid + ".style.display=\"\";");
            }
            else
            {
                eval("alsub" + sid + ".style.display=\"none\";");
            }
        }
        function shows(sid)
        {
            whichEl = eval("al" + sid);
            if (whichEl.style.display == "none")
            {
                eval("al" + sid + ".style.display=\"\";");
            }
            else
            {
                eval("al" + sid + ".style.display=\"none\";");
            }
        }</script><asp:GridView ID="grvCommentList" ShowHeader="False" PageSize="4" runat="server"  AutoGenerateColumns="False" Width="700px" AllowPaging="True" DataSourceID="objComment">
                    <Columns>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <div class="graytitle" onclick="shows(<%# Eval("ID") %>)"><%# Eval("FullUserName")%> 
                                    <%# Eval("CommentDate") %>
                                </div>
                            <div id="al<%# Eval("ID") %>"><br /><%# Eval("CommentContent") %></div>
                                                   
    </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <RowStyle HorizontalAlign="Left" />
                    <PagerStyle HorizontalAlign="Center" />
                    </asp:GridView>参考一下把
      

  10.   

    其实我在第一贴子里面已经给出思路了.就是你不断的去 Parent 控件看看是什么类型,多试试就知道了
      

  11.   

    <asp:datalist id="dlDQue" runat="server">
    <ItemTemplate>
    <table>
           //这个table里的是问题并且有个btuuton id="btnShow" CommandName="Show" onclick="javascript:dv<%# Eval("dlDQue_id") %>.style.display='none';"
    <input type="button" id="<%# Eval("dlDQue_id") %>"  onclick="return ShowDiv(this);" value="显示">          
    </table>
    <div id="dv<%# Eval("dlDQue_id") %>" style="display:none">
    <asp:DataList ID="dlAnswer" Runat="server" DataSource='<%# GetAnswersById(DataBinder.Eval(Container,"DataItem.DQueId").ToString())%>' OnItemCommand="dlAnswer_ItemCommand">
    </datalist>//这个datalist里是单个问题的所有回答
    <table>
         //这个table里放的是提交回答的信息和提交按钮
    </table>
    </div>
    </ItemTemplate>
    <datalist>
    <script type="text/javascript" language="javascript">
       function showdiv(divid)
       {
      
       var mydiv = document.getElementById(divid);
      
       if(mydiv.style.display =="")
        mydiv.style.display = "none";
        else
        mydiv.style.display ="";
      
       }
        
        </script>
      

  12.   


    我是这样写的 DataList dls = (DataList)DataList1.Parent.FindControl("DataList2");
    运行后dls的值总是为null,而且总是发现“未将对象引用设置到对象的实例。”
    这到底是怎么回事啊!!!