2012-02-26 21 views
1

私は完全に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」SELECT 「DEFUALT

2 AS:一方、それは隠されている、ユーザーがそれをクリックしないであろう、そしてユーザーがそれを見ることができなくなり、

3:フォームの値が提出する 『両方』アクションスクリプトへの

(私が知っている、いずれかのボタンが隠されているか、ラジオ、そうラジオや隠さができない可能性があります、それを設定し、)

あなたは隠されたdivの中にそれを置く場合...

答えて

1

を私にしてくださいガイド(またはスパン)、それを表示せず、まだ存在していて、デフォルトで選択することができます。そしてそれの価値は掲示されます。

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> 

マークアップ:あなたはJavascriptと正規ASPラジオボタンリストを使用して、このような何かができ

<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

<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

私はこれを行う最良の方法は、 "両方"のラジオボタンを持つことを嫌うことだと思います。とにかくそれが隠されていて、あなたがそのユーザーとやりとりすることを決して望んでいない場合は、あなたのページに入れないでください。 「バイヤー」または「売り手」のいずれかを(最初に)選択して、デフォルト値でないようにしないでください。これは、どちらもがそうのように選択されていない場合は、背後にある自分のコードをチェックインすることができます...あなたのマークアップで

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

(私はRepeatLayout =「フロー」を使用していますことに気づく - これはASPに伝えます。レイアウトにテーブルを使用せずにマークアップをレンダリングするためのネット - 私は思う非常に良く)

ファイルの後ろにあなたのコードでは、フォームを送信し、ユーザーに対応するために、ボタンのクリックハンドラを持っています - このような何か:

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を使用すると簡単に使用できます。

また、あなたがあなたの代わりに場合/他の三元を使用することができ、コードを短くしたい場合 - そのように:

string status = (StatusRadioList.SelectedItem == null) 
        ? "Both" 
        : StatusRadioList.SelectedValue; 
関連する問題