如何设置默认的单选按钮使其隐藏?

时间:2012-02-26 20:20:01

标签: asp.net forms radio-button

我完全是asp.net的新手,但出于某种原因,我必须在以下代码中稍微改变一下

<TR>
                <TD STYLE="WIDTH: 25%" ALIGN="RIGHT">I am:&nbsp;</TD>
                <TD STYLE="WIDTH: 75%" ALIGN="LEFT">
                     <INPUT TYPE="RADIO"  VALUE="Buy-New-Home" NAME="STATUS" ID="STATUS_BUYER" onClick="enableSection( 'Buyer' );"<% if( Request.QueryString( "STATUS" ) == "Buy-New-Home" || Request.QueryString( "STATUS" ).Count == 0 ) Response.Write( " CHECKED" ); %>>Buying
                    <INPUT TYPE="RADIO"  VALUE="Sell-Home" NAME="STATUS" ID="STATUS_SELLER" onClick="enableSection( 'Seller' );"<% if( Request.QueryString( "STATUS" ) == "Sell-Home" ) Response.Write( " CHECKED" ); %>>Selling           ---->>
                    <INPUT TYPE="RADIO"  VALUE="Buy-Resale-Home" NAME="STATUS" ID="STATUS_BOTH" onClick="enableSection( 'Both' );"<% if( Request.QueryString( "STATUS" ) == "Buy-Resale-Home" ) Response.Write( " CHECKED" ); %>>Both
                </TD>

如何将上述代码更改为

1:选择“BOTH”作为DEFUALT

2:MEANWHILE隐藏,用户不会点击它,用户将无法看到它,

3:表单会将“both”的值提交给动作脚本

(我知道,无论是隐藏按钮还是收音机,因此无法将其设置为无线电和隐藏,)

引导我请..

3 个答案:

答案 0 :(得分:1)

如果将它放在隐藏的div(或span)中,则表示您没有显示它,但仍然存在并且可以是默认选择。它的价值将被公布。

<div style="display:none;">
<INPUT TYPE="RADIO"  VALUE="Buy-Resale-Home" NAME="STATUS" ID="STATUS_BOTH" onClick="enableSection( 'Both' );"<% if( Request.QueryString( "STATUS" ) == "Buy-Resale-Home" ) Response.Write( " CHECKED" ); %>>Both
</div>

答案 1 :(得分:1)

您可以使用Javascript和常规ASP单选按钮列表执行此类操作:

Javascript:

<script>
    window.onload = function () {
        var radios = document.getElementById('<%=list.ClientID%>').getElementsByTagName('input');
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].value == "Both" && '<%=Request.QueryString["Both"]=="Buy-Resale-Home" %>'.toLowerCase() == 'true') {
                radios[i].checked = 'checked'; //select it
                radios[i].style.display = 'none'; //hide it
            }
            else  //more logic for other 2 radio buttons
            {
            }
        }
    }
</script>

标记:

<asp:RadioButtonList ID="list" runat="server">
    <asp:ListItem Text="Both" Value="Both"></asp:ListItem>
    <asp:ListItem Text="Selling"  Value="Selling"></asp:ListItem>
    <asp:ListItem Text="Buying"  Value="Buying"></asp:ListItem>
</asp:RadioButtonList>

你可以选择在代码背后做一切,在我看来,这比javascript方法更好,但这取决于你最熟悉的语言。

答案 2 :(得分:1)

我认为这样做的最好方法是不要为“两个”设置单选按钮。如果它仍然是隐藏的,你永远不希望用户与它进行交互,那么就不要把它放在你的页面上。不要将“买方”或“卖方”设置为选中(最初),以便默认不是。如果两者都没有被选中,这将允许您检查您的代码...

在你的标记中:

<asp:RadioButtonList id="StatusRadioList" CssClass="radio-buttons" RepeatLayout="Flow" runat="server">
  <asp:ListItem>Buyer</asp:ListItem>
  <asp:ListItem>Seller</asp:ListItem>
</asp:RadioButtonList>

(注意我正在使用RepeatLayout =“Flow” - 这告诉asp.net渲染标记而不使用布局表格 - 我认为好多了)

在您的代码隐藏文件中,您将有一个按钮点击处理程序来响应提交表单的用户 - 如下所示:

protected void OnFormSubmitClick(object sender, EventArgs e)
{
    if (IsValid)
    {
        string status;
        if (StatusRadioList.SelectedItem == null)
        {
            status = "Both";
        }
        else
        {
            status = StatusRadioList.SelectedValue;
        }

        // The rest of your code here
        // ...
    }
}

在上面的例子中,我使用了RadioButtonList的SelectedValue来获取“status”的字符串值,但如果这对你更有效,你可以很容易地使用SelectedItem或SelectedIndex。

另外,如果你想缩短代码,你可以使用三元而不是if / else - 就像这样:

string status = (StatusRadioList.SelectedItem == null) 
                    ? "Both" 
                    : StatusRadioList.SelectedValue;