c# - 设置 RadioButtonList 的选定值无法按预期工作

标签 c# javascript jquery asp.net

我有一个 div,它根据某些条件显示或隐藏。在那个 Div 我有一些代码如下

<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>

其中 Main Code 在这里

<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 radio,它工作正常。但是当我点击 btnHide (记住,当前选择是 EDIT 单选按钮) 并点击其他链接时。 ShowPopUp() 被调用并重置所有控件,但是 当我点击 EDIT Radio 它不会回传,我点击 ADD Radio,它会,现在如果我点击 EDIT,它会。

意味着,如果弹出窗口隐藏了选定的值 Edit,当我选择 Edit radio 时,它不会第一次回发。 请问我是否不清楚。 谢谢

最佳答案

您可能需要考虑通过属性窗口或 C# 将控件的 AutoPostBack 属性设置为 false

关于c# - 设置 RadioButtonList 的选定值无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22194887/

相关文章:

javascript - 回调窗口对象初始化(在页面中动态包含 iframe)

jquery - tomcat 服务器 (GWT) 上的 $.ajax 意外 token 错误

c# - 为什么 MS 在新的 Windows 应用商店应用模板中去掉了 BindableBase?

c# - 如何向 ICommand 对象添加键盘快捷键

javascript - 检查前一行值并相应地显示下一行

javascript - JS - 移动图像,暂停设定时间,然后将图像移回

jquery - 这个简单的点击功能我做错了什么?

c# - 可以将自定义文本添加到 ListView 单元格吗?

c# - EF 6.0 中缺少 DbSet<entity>.Load() 函数

javascript - 对表中的多行使用单个可观察对象