2009-02-11 19 views
0

我對ASP.Net並不是很有經驗,因爲我主要使用PHP。 我想這一點,但它不工作:如何有條件地更改表示層中的控件屬性

<asp:TextBox runat="server" ID="txtAnswer" 
    TextMode='<%# IIf(DataBinder.Eval(Container.DataItem, "DoLargeInput"), "MultiLine", "SingleLine")%>' Text=''></asp:TextBox> 

DoLargeInput是一個布爾值。

爲什麼不能正常工作?

我剛開了以下錯誤:

System.InvalidCastException: Conversion from string "MultiLine" to type 'Integer' is not valid. ---> System.FormatException: Input string was not in a correct format. 
    at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) 
    at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) 
    --- End of inner exception stack trace --- 
    at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value) 
    at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(Object Value) 
    at ASP.profile_questions_aspx.__DataBinding__control6(Object sender, EventArgs e) 
    at System.Web.UI.Control.OnDataBinding(EventArgs e) 
    at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
    at System.Web.UI.Control.DataBind() 
    at System.Web.UI.Control.DataBindChildren() 
    at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
    at System.Web.UI.Control.DataBind() 
    at System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) 
    at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) 
    at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) 
    at System.Web.UI.WebControls.Repeater.DataBind() 
    at profile_questions.LoadObjects() 

任何幫助將不勝感激。謝謝!

回答

1

嘗試: -

IIf(DataBinder.Eval(Container.DataItem, "DoLargeInput"), TextBoxMode.MultiLine, TextBoxMode.SingleLine 

它,將轉換的TextMode = 「多行」 approriately爲您解析。在這個綁定代碼發生分析結束時,您需要像在代碼中那樣指定值。

+0

偉大的作品謝謝。 那麼TextBoxMode.MultiLine是一個全局常量? – adamJLev 2009-02-11 22:43:52

0

無法轉換爲「整數」是因爲TextMode屬性是一個.NET enum,它在內部表示爲一個整數。 TextBoxMode.MultiLineTextBoxMode.SingleLine代表正確的價值類型。

在MSDN上,你可以看到TextBox.TextMode property的類型爲TextBoxMode

相關問題