我完全是asp.net的新手,但出于某种原因,我必须在以下代码中稍微改变一下
<TR>
<TD STYLE="WIDTH: 25%" ALIGN="RIGHT">I am: </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”的值提交给动作脚本
(我知道,无论是隐藏按钮还是收音机,因此无法将其设置为无线电和隐藏,)
引导我请..
答案 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;