2012-02-26 61 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 「AS DEFUALT

2:同時它是隱藏的,用戶不會點擊它,用戶將無法看到它,

3:形式將提交的值‘都’,以動作腳本

(什麼我知道,無論是按鈕被隱藏或收音機,因此將其設置無線電和隱藏的可能是不可能的)

指引我請..

回答

1

如果你把它放在一個隱藏的div(或跨度),那麼你沒有顯示它,但仍然存在,可以是默認選擇。它的價值將被公佈。

<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

你可以做這樣的事情使用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方法更好,但是它很糟糕d取決於你最熟悉的語言。

1

我認爲做這件事的最好方法是不要打擾有一個單選按鈕「Both」。如果它仍然隱藏,並且你永遠不希望用戶與它進行交互,那麼就不要把它放在你的頁面上。不要將「買方」或「賣方」設置爲選定(初始),以使默認值既不是。這將使如果選擇既不像這樣你在你的代碼檢查背後...

在您的標記:

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

另外,如果你想縮短代碼,你可以使用一個三元代替的if/else - 像這樣:

string status = (StatusRadioList.SelectedItem == null) 
        ? "Both" 
        : StatusRadioList.SelectedValue; 
相關問題