asp.net
2009-02-11 3 views 0 likes 
0

Je ne suis pas très expérimenté dans ASP.Net, car je travaille principalement avec PHP. J'essaie, mais cela ne fonctionne pas:Comment modifier de façon conditionnelle une propriété de contrôle dans la couche de présentation

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

DoLargeInput est un booléen.

Pourquoi cela ne fonctionne-t-il pas?

Je suis gettin l'erreur suivante:

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() 

Toute aide serait grandement appréciée. Merci!

Répondre

1

Essayez: -

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

Il Parse qui convertira TextMode = "multiligne" approriately pour vous. Au moment où ce code de liaison arrive, l'analyse est terminée, vous devez spécifier la valeur comme vous le feriez dans le code.

+0

Super qui fonctionne merci. Alors TextBoxMode.MultiLine est une constante globale? – adamJLev

+0

TextBoxMode est un type d'énumération contenant l'ensemble des valeurs valides pour la propriété TextMode des contrôles TextBox. Son disponible dans l'espace de noms System.Web.UI.WebControls. Le nom global de la valeur est en fait System.Web.UI.WebControls.TextBoxMode.MultiLine – AnthonyWJones

+0

Merci pour l'explication – adamJLev

0

La conversion échouée en 'Entier' est due au fait que la propriété TextMode est .NET enum, qui est représentée en interne en tant qu'entier. TextBoxMode.MultiLine et TextBoxMode.SingleLine représentent le type de valeur correct. Sur MSDN vous pouvez voir le TextBox.TextMode property a le type TextBoxMode.

Questions connexes