2009-11-25 6 views
1
public void item_bound(object sender,DataGridItemEventArgs e) 
     { 
      try 
      { 
       if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))`enter code here` 
       { 
        string Status =(string)DataBinder.**Eval**(e.Item.DataItem,"customer_status"); 
        Image Image = new Image(); 
        Image = (Image)e.Item.Cells[1].FindControl("imgbtnstatus"); 
        //Image.Command +=new CommandEventHandler(Image_Command); 
        //Image.Attributes.Add("SEmpId ", SEmpId); 
        if (Status == "Active") 
         Image.ImageUrl = "~/images/activeuser.png"; 
        else 
         Image.ImageUrl = "~/images/inactiveuser.png"; 
       } 
      } 
      catch(Exception ex){Response.Write(ex.ToString()); 
      } 
     } 

ici est le code pour l'exécution liant l'image active et inactive pour les utilisateurs DataGrid ...Eval dans asp.net

je veux savoir quel est l'utilisation de Eval dans le code ci-dessus ..

Répondre

2

Eval prend et évalue la valeur "customer_status" de l'élément actuel dans la source de données.

+2

En fait, je crois que c'est la valeur de customer_status dans la source de données, peut-être un DataSet? – DOK

+0

Correct. J'ai vu le "DataGridEventArgs" et "DataGrid" coincé dans ma tête. – McKay

0

Je suis d'accord avec la réponse de McKay; Je pensais juste développer un peu sur ceci:

L'objet DataBinder aussi comme une fonction GetIndexedPropertyValue qui vous permet de récupérer des choses comme des éléments d'un tableau ou un dictionnaire.

Par exemple, vous pouvez faire DataBinder.GetIndexedPropertyValue (e.Item.DataItem, "[0]") pour obtenir le premier élément d'un tableau, ou vous pouvez faire DataBinder.GetIndexedPropertyValue (e.Item.DataItem, " [nom] ") pour obtenir une valeur d'un dictionnaire en utilisant la touche" nom ".

Bien qu'il pourrait y avoir une raison de faire cela dans le code-behind, une grande partie du code de la question pourrait être fait dans le balisage ASP.Net place:

<asp:Image ID="imgbtnstatus" runat="server" ImageUrl='<%# ((string)DataBinder.Eval(Container.DataItem,"customer_status") == "Active") ? "~/images/activeuser.png" : "~/images/inactiveuser.png" %>' /> 

En outre, depuis .Net 2.0 une fonction Eval a été disponible qui remplace DataBinder.Eval (Container.DataItem, ...). Le balisage ASP dans mon exemple pourrait être écrit comme suit:

<asp:Image ID="imgbtnstatus" runat="server" ImageUrl='<%# ((string)Eval("customer_status") == "Active") ? "~/images/activeuser.png" : "~/images/inactiveuser.png" %>' /> 

La fonction Eval peut également être utilisé pour récupérer des valeurs similaires à la fonction DataBinder.GetIndexedPropertyValue en passant une chaîne entre crochets.