2016-10-28 29 views
0

我不知道爲什麼,但我真的很苦惱。我想一個可空布爾屬性綁定到一個單選按鈕列表:在ASP.NET中綁定SelectedValue

<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屬性綁定。此頁面背後的代碼有一個公共屬性InstanceOfMyModel(由會話支持)MyMode l,它具有可爲空的布爾值屬性MyProperty。將類型更改爲字符串不會執行任何操作。 'bound'屬性不會改變:如果它是之前的字符串,它是相同的字符串;如果它爲空,它仍然是空的。

誰能告訴我我做錯了什麼?是否存在一些抑制轉換問題?我沒有收到編譯或運行時錯誤。

+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