<asp:DropDownList ID="DropDownList9" runat="server" Width="105" onchange="ChangeTR()">
    <asp:ListItem Text="x1" Value="0"></asp:ListItem>
    <asp:ListItem Text="x2" Value="1"></asp:ListItem>
    <asp:ListItem Text="x3" Value="2"></asp:ListItem>
</asp:DropDownList><tr id="chengpin"">
<td>
.......
</td>
</tr><script language="javascript" type="text/javascript">
    function ChangeTR()
    {
        if(document.all.DropDownList9.value=="0")
            chengpin.style.display="display";
        else
            chengpin.style.display="none";
    }
</script>
如上代码,我用Js控制表格中某一行的显示隐藏,可以正常实现,但是页面上如果选择了其他设置AutoPostBack为True的控件,则那一行会回到初始值。比如我现在是选到隐藏行,点及其他一个控件,就又显示了。请问有什么办法能解决?

解决方案 »

  1.   

    <tr id="chengpin"">
    多写一引号
      

  2.   

    无刷新实现updatepanel
    隐藏域等记录是否可见,加载时取值判断
      

  3.   

    可以用后台来控制隐藏
     不要用JS 。
    AutoPostBack 的时候,把正格页面又LOAD了一篇
      

  4.   

     把onchange改成 onserverchange
      

  5.   


    我就是用的updatepanel额...
      

  6.   


    onserverchange也不行额,没反应了
      

  7.   

    在load中加上:DropDownList9.SelectedValue=Request.Form["DropDownList9"].ToString();
      

  8.   

    把<asp:DropDownList 的onchange改成 onserverchange<tr id="chengpin""> 改成 <tr runat="server" id="chengpin"">服务器 上加上onchang的代码.
     
    protected void ChangeTR(object sender, EventArgs e)
        {
            if( DropDownList9.value=="0")
                chengpin.隐藏;
            else
                chengpin.显示;
        }
      

  9.   

    OK,改好了,也不用弄什么onserverchange,直接用OnSelectedIndexChanged,加上AutoPostBack,tr加上 runat="server",后台隐藏就成了~~