2014-03-05 29 views
3

我有一个div,根据某些条件显示或隐藏div。在这种Div我有一些代码,如下设置RadioButtonList的选定值不能按预期工作

<div id="addPopUp" runat="server" style="padding: 30px; height: auto; width: 450px; 
    overflow: hidden; display: none; background-color: White; border: 1px solid black;"> 
    <table width="500px;"> 
     <tr> 
      <td valign="top" align="left" style="width: 27%;"> 
       <input type="hidden" runat="server" id="hfLevel" /> 
       <input type="hidden" runat="server" id="hfLevel1Id" /> 
       <input type="hidden" runat="server" id="hfLevel2Id" /> 
       <input type="hidden" runat="server" id="hfLevel3Id" /> 
      </td> 
      <td style="width: 80%;"> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 20%;" align="left" class="topics"> 
       &nbsp; 
      </td> 
      <td style="width: 80%;"> 
       <asp:RadioButtonList ID="rbtnMode" runat="server" RepeatDirection="Horizontal" CssClass="mylist" 
        AutoPostBack="true" OnSelectedIndexChanged="rtbnMode_SelectedIndexChanged"> 
        <asp:ListItem Selected="True" Value="Add">Add Link</asp:ListItem> 
        <asp:ListItem Value="Edit">Edit Link</asp:ListItem> 
       </asp:RadioButtonList> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 20%;" align="left" class="topics"> 
       <strong>Link Name :</strong> 
      </td> 
      <td style="width: 80%;"> 
       <asp:TextBox ID="txtLinkName" CssClass="txtbox" runat="server"></asp:TextBox> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 20%;" class="topics"> 
       <strong>Url :</strong> 
      </td> 
      <td style="width: 80%;"> 
       <asp:TextBox ID="txtUrl" CssClass="txtbox" runat="server"></asp:TextBox> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 20%;" class="topics"> 
       <strong>Position :</strong> 
      </td> 
      <td style="width: 80%;"> 
       <asp:TextBox ID="txtPosition" CssClass="txtbox" runat="server"></asp:TextBox> 
      </td> 
     </tr> 
     <tr> 
      <td style="width: 20%;" class="topics"> 
       <strong>Show on same page :</strong> 
      </td> 
      <td style="width: 80%;"> 
       <asp:CheckBox ID="chkSamePage" runat="server" Checked="true" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       &nbsp; 
      </td> 
      <td class="topics" align="left"> 
       <asp:Button ID="btnSave" runat="server" Text="Save" CssClass="sfCustomButton" OnClick="btnSave_Click" /> 
       &nbsp;&nbsp; 
       <asp:Button ID="btnHide" runat="server" Text="Hide Link" CssClass="sfCustomButton" 
        Visible="false" /> 
       &nbsp;&nbsp; 
       <input type="button" id="btnCancel" value="Cancel" class="sfCustomButton" onclick="hide()" /> 
      </td> 
     </tr> 
    </table> 
</div> 

外面主代码来这里

<asp:RadioButtonList ID="rbtnMode" runat="server" RepeatDirection="Horizontal" CssClass="mylist" 
        AutoPostBack="true" OnSelectedIndexChanged="rtbnMode_SelectedIndexChanged"> 
    <asp:ListItem Selected="True" Value="Add">Add Link</asp:ListItem> 
    <asp:ListItem Value="Edit">Edit Link</asp:ListItem> 
</asp:RadioButtonList> 

下面是一些Javascript代码:

function showPopUp(Level, Level1Id, Level2Id, Level3Id, id) { 
     var radAddEdit = document.getElementById('<%=rbtnMode.ClientID %>'); 
     var radio = radAddEdit.getElementsByTagName("input"); 
     for (var i = 0; i < radio.length; i++) { 
      if (radio[i].value == 'Add') { 
       radio[i].checked = true; 
      }   
     }  
     document.getElementById("txtLinkName").value = ''; 
     document.getElementById("txtUrl").value = ''; 
     document.getElementById("txtPosition").value = ''; 
     document.getElementById("chkSamePage").checked = true; 
     document.getElementById("hfLevel").value = Level; 
     document.getElementById("hfLevel1Id").value = Level1Id; 
     document.getElementById("hfLevel2Id").value = Level2Id; 
     document.getElementById("hfLevel3Id").value = Level3Id; 
     document.getElementById("hfEditableId").value = id; 
     Popup.showModal('addPopUp', null, null, { 'screenColor': '#cccccc', 'screenOpacity': .6 }); 
    } 
    function hide() {  
     Popup.hide('addPopUp'); 
    } 
    // function BindEvents() { 
    $(document).ready(function() { 
     var hf = document.getElementById("hfShow"); 
     if (hf.value == "1") { 
      Popup.showModal('addPopUp', null, null, { 'screenColor': '#cccccc', 'screenOpacity': .6 }); 
     } 
    }); 

功能ShowPopUp被称为上显示Div并重置其值的链接。 HidebtnCalcel被调用来隐藏Div。 document.ready()被称为在某些情况下显示Div。

代码隐藏

protected void rtbnMode_SelectedIndexChanged(Object sender, EventArgs e) 
     { 
      if (rbtnMode.SelectedValue == "Edit") 
      { 
       CatalystEntities context = new CatalystEntities(); 
       btnHide.Visible = true; 
       btnSave.Visible = false; 
       hfShow.Value = "1"; 
       string editValue = hfEditableId.Value; 
       string levelNumber = editValue.Substring(0, 6); 
       long id = Convert.ToInt64(editValue.Substring(6)); 
       if (levelNumber.Contains("1")) 
       { 
        var linkInfo = context.Navigation_level1. 
         Where(i => i.LinkID == id) 
         .Select(i => new 
         { 
          i.LinkName, 
          i.Position, 
          i.Url 
         }).FirstOrDefault(); 
        txtLinkName.Text = linkInfo.LinkName; 
        txtPosition.Text = linkInfo.Position.ToString(); 
        txtUrl.Text = linkInfo.Url; 
       } 
      } 
      else 
      { 
       btnSave.Visible = true; 
       btnHide.Visible = false; 
       hfShow.Value = "1"; 
       txtLinkName.Text = String.Empty; 
       txtPosition.Text = String.Empty; 
       txtUrl.Text = String.Empty; 
      } 
     } 

问题

当我打开DIV,去Edit无线电,它工作正常。但是当我点击btnHide(请记住,当前的选择是编辑单选按钮)并点击其他链接。 ShowPopUp()被调用,它重置所有的控件,但是当我点击EDITRadio它不回发,我点击ADD Radio,它现在如果我点击编辑,它会。

意思是,如果弹出窗口被选中的值隐藏起来Edit当我选择编辑电台时,它不会第一次回发。 请问我是否不清楚。 感谢

+0

这是一大堆需要经历的代码。没有人有太多时间筛选所有这些代码。如果您只能精确定位错误的部分并粘贴它或在像Jsfiddle – MarsOne

+0

这样的测试环境中生成它,那么IT会非常棒,我已经在那里写了** Main Code **,但如果你们中的一些人发现它不完整,我粘贴了所有。 – SMI

回答

0

你可能要考虑通过属性窗口或C#控制的的AutoPostBack属性设置为

+0

它应该总是回发花花公子 – SMI