2009-09-03 7 views

Répondre

2

Si vous ne souhaitez pas utiliser le code en ligne dans vos pages ASPX comme David a suggéré faire modèle avec un contrôle littéral et mettre en œuvre l'événement OnDataBinding:

par exemple, dans votre grille ont le modèle suivant pour votre domaine:

<asp:TemplateField HeaderText="Your Header Name"> 
    <ItemTemplate> 
     <asp:Literal runat="server" ID="litYourCustomField" OnDataBinding="litYourCustumField_DataBinding"></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

Ensuite, vous mettre en œuvre le onda taBinding dans votre code derrière:

protected void litYourCustomField_DataBinding(object sender, System.EventArgs e) 
{ 
    Literal lit = (Literal)(sender); 
    int yourInt = Convert.ToInt32(Eval("YourNumber")); 
    lit.Text = (yourInt == 1) ? "It's a 1" : "It's something else"; 
} 

Je préfère cette méthode pour le code en ligne puisqu'il met pas de code dans vos pages ASPX. J'ai généralement une # région définie dans mon fichier .cs qui a tout par code de liaison de données. Je suis sûr que les performances seront à peu près identiques, à l'exception peut-être de l'overhead du contrôle littéral si vous avez activé viewstate. Assurez-vous de désactiver viewstate lorsque vous n'en avez pas besoin.

0

Si cela est ASP.Net, vous pouvez en faire une colonne de modèle et procédez comme suit:

<ItemTemplate> 
    <%# MyConversionFunction(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "IntegerFieldName"))) %> 
</ItemTemplate> 

protected string MyConversionFunction(int ValueToCheck) 
{ 
    if(ValueToCheck.ToString() == "0") 
    { 
     return "SomeText"; 
    } 
    else 
    { 
     return SomeValue.ToString(); 
    } 
} 
Questions connexes