2009-02-11 18 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

相关问题