2016-10-28 1 views
0

なぜか分かりませんが、私は本当にこれで苦労しています。私は、RadioButtonListのにNULL可能ブール型プロパティをバインドしたい:ASP.NETで選択した値をバインドする

<asp:RadioButtonList ID="MyControl" runat="server" SelectedValue='<%# Bind("InstanceOfMyModel.MyProperty") %>'> 
    <asp:ListItem Text="Yes" Value="True"></asp:ListItem> 
    <asp:ListItem Text="No" Value="False"></asp:ListItem> 
</asp:RadioButtonList> 

私はMyControlを通じて値にアクセスすることができますが、私はSelectedValueプロパティをバインドするように見えることはできません。このページの背後にあるコードは、無効なブール値のプロパティMyPropertyを持つ lのパブリックプロパティInstanceOfMyModel(セッションでサポート)を持っています。型を文字列に変更することは何もしません。 'bound'プロパティは変更されません。前の文字列だった場合は同じ文字列です。 nullの場合はnullです。

誰も私が間違ってやっているものを私に伝えることができますか?いくつか抑制されたコンバージョンの問題はありますか?私はコンパイルやランタイムエラーが発生していません。

+0

私は簡単な検索でこれを見つけた... http://stackoverflow.com/questions/3482477/how-to-bind-bool-to-radiobutton-in-asp-netそれが役に立てば幸い.. –

+0

@Angelaお試しいただきありがとうございます。その場合、ブール値である単一のラジオボタンの 'Checked'プロパティにバインドしようとしていますが、RadioButtonListの' SelectedValue'プロパティは文字列です。 – ricksmt

+0

'MyControl'がデータをリピートするコントロール(ListView、GridViewなど)にない場合、バインディングは機能しません。コードを使用する: 'if(!Page.IsPostBack){MyControl.SelectedValue =" False "; } ' – VDWWD

答えて

0

SelectedValueプロパティを宣言的に設定することはできません。コード内でこれを行う必要があります。

MyControl.SelectedValue = "False"; 

本当にコードを使用したくない場合は、JavaScriptを使用できます。

<script type="text/javascript"> 
    var myControl = "<%= MyControl.ClientID %>"; 
    var myValue = "<%= InstanceOfMyModel.MyProperty %>"; 
    if (myValue == "True") { 
     document.getElementById(myControl + "_0").checked = true; 
    } else { 
     document.getElementById(myControl + "_1").checked = true; 
    } 
</script> 
+0

これとは対照的に、コントロールの反復データでなぜ機能するのかはわかりませんが、私はそれを受け入れると思います。 – ricksmt

関連する問題