2012-06-15 36 views
2

我想根據typeId顯示覆選框或單選按鈕。Eval中的ASP.NET控件if else語句?

<%# (Eval("TypeId").ToString() == "1") ? "CheckBox" : "RadioButton"%> 
<asp:CheckBox ID="CheckBox" runat="server" Text='<%#Eval("OptionName")%>' /> 
<asp:RadioButton ID="RadioButton" runat="server" Text='<%#Eval("OptionName")%>' /> 

If typeId == 1我想顯示在我的代碼行中的複選框否則我想顯示單選按鈕。 我該怎麼做。

謝謝。

+0

使用兩個控件的可見屬性。 –

+0

這對我來說太難了。因爲我使用了3個嵌套中繼器,並且這個代碼位於第三級中繼器:) –

+0

爲什麼這會讓它變得困難? – Itison

回答

2

您可以使用Visible屬性:

<asp:CheckBox ID="CheckBox" runat="server" 
    Text='<%#Eval("OptionName")%>' 
    Visible='<%# Eval("TypeId").ToString() == "1" %>' 
/> 
<asp:RadioButton ID="RadioButton" runat="server" 
    Text='<%#Eval("OptionName")%>' 
    Visible='<%# Eval("TypeId").ToString() != "1" %>' 
/> 
0

添加兩個布爾屬性的數據源調用,例如,ShowCheckBox和ShowRadioButton

public bool ShowCheckBox 
{ 
    get 
    { 
     return TypeId.ToString() == "1"; 
    } 
} 

,並利用這些數據綁定到Visible屬性

<asp:CheckBox ID="CheckBox" runat="server" Visible='<%#Eval("ShowCheckBox")%>' /> 
0

試試這個:

<asp:CheckBox ID="CheckBox" runat="server" Visible="<%# (Eval("TypeId").ToString() == "1") ? True : False %>" Text='<%#Eval("OptionName")%>' /> 
+0

這是個好主意。但會出現「字符串太不布爾轉換錯誤」。我用Tim Schmelter的回答解決了這個問題 –

0

在Repeater.ItemDatabound事件中,在那裏添加適當的控件。