Im ustawienie źródło danych z następującego kodu:dostępu kolumny w przypadku ItemDataBound gdy źródło danych jest 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();
}
Teraz chcę wiedzieć, w jaki sposób mogę uzyskać dostęp do 1 z kolumn (jak CustomerID) z ItemDataBound zdarzenie.
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;
}
I zorientowali się, że e.Item.DataItem zawiera wszystkie pola z mojego zapytania i rodzaj e.Item.DataItem jest
f__AnonymousType8<string,bool,byte,string,string,string,long>
Więc jestem dwa lata późno do gry na tym, ale nikt inny nie zauważył, że to się nie skomplikuje? "var" nadal próbuje wywnioskować typ danych w czasie projektowania, a ponieważ jest to typ anonimowy, nie może tego zrobić. Ten kod powinien dać błąd "Nie można rozwiązać symbolu" IDklienta "w drugim wierszu. Metoda RobD jest poprawna przy założeniu .NET 4.0. – Scott