Im réglage du datasource avec le code suivant:colonnes d'accès en cas ItemDataBound lorsque la source de données est Linq
protected void Page_Load(object sender, EventArgs e)
{
var vacancies = from v in db.Vacancies
join c in db.Customers on v.CustomerID equals c.CustomerID
join cp in db.CustomerPortals on c.CustomerID equals cp.CustomerID
where cp.PortalID == Master.Portal.ID
select new
{
Title = v.Title,
Internship = (v.ContractID == 6),
Hours = v.Hours,
City = v.Customer.City.Name,
Degree = v.Degree.Title,
Contract = v.Contract.Title,
CustomerID = v.CustomerID
};
rVacancies.ItemDataBound += new RepeaterItemEventHandler(rVacancies_ItemDataBound);
rVacancies.DataSource = vacancies;
rVacancies.DataBind();
}
Maintenant, je veux savoir comment je peux accéder à 1 des colonnes (comme CustomerID) du ItemDataBound un événement.
void rVacancies_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// This doesnt seem to work, row would be null even though e.Item.DataItem has a value.
DataRow row = (DataRow)e.Item.DataItem;
}
J'ai compris que e.Item.DataItem contient tous les champs de ma requête et le type de e.Item.DataItem est
f__AnonymousType8<string,bool,byte,string,string,string,long>
Je suis deux ans de retard au jeu sur celui-ci, mais personne d'autre a remarqué que cela ne compilera pas? "var" tente toujours de déduire le type de données au moment du design et comme c'est un type anonyme, il ne peut pas le faire. Ce code devrait vous donner l'erreur "Impossible de résoudre le symbole" CustomerID "sur la deuxième ligne La méthode de RobD est correcte en supposant que .NET 4.0 – Scott