Как установить радио-кнопку по умолчанию, чтобы сделать ее скрытой? - PullRequest
1 голос
/ 27 февраля 2012

Я совершенно новый пользователь 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: ВЫБЕРИТЕ «ОБА» КАК ПО УМОЛЧАНИЮ

2: ПОДТВЕРЖДАЕТ, что он скрыт, пользователь не будет нажимать на него, и пользователь не сможет его увидеть,

3: форма будет отправленазначение «обоих» для сценария действия

(что я знаю, кнопка скрыта или радио, поэтому установка радио и скрытого может быть невозможна)

Направьте меня, пожалуйста..

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Вы можете сделать что-то вроде этого, используя 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>

Markup:

<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, но это будет зависеть от того, с каким языком вы наиболее знакомы.

1 голос
/ 27 февраля 2012

Я думаю, что лучший способ сделать это - не беспокоиться о наличии переключателя для «Оба». Если он все равно скрыт, и вы никогда не хотите, чтобы пользователь взаимодействовал с ним, просто не размещайте его на своей странице. Не устанавливайте «Покупатель» или «Продавец» в выбранном (изначально), чтобы по умолчанию не было ни того, ни другого. Это позволит вам проверить свой код, если ни один из них не выбран, как ...

В вашей разметке:

<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
        // ...
    }
}

В приведенном выше примере я использовал SelectedValue RadioButtonList, чтобы получить строковое значение для «status», но вы также можете легко использовать SelectedItem или SelectedIndex, если это работает лучше для вас.

Кроме того, если вы хотите сократить код, вы можете использовать троичный вместо if / else - например, так:

string status = (StatusRadioList.SelectedItem == null) 
                    ? "Both" 
                    : StatusRadioList.SelectedValue;
1 голос
/ 27 февраля 2012

Если вы поместите его в скрытый 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>
...