2009-09-24 9 views
15
ある

イム:アクセス列データソースが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(); 
    } 

は今、私はItemDataBoundから(得意先など)の列の1にアクセスする方法を知りたいですイベント。私はあなたがあなたへのDataRowを結合していないe.Item.DataItemは私のクエリからすべてのフィールドが含まれており、e.Item.DataItemのタイプは

f__AnonymousType8<string,bool,byte,string,string,string,long> 

答えて

-1

であることを考え出した

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; 
    } 

(あなたは匿名型をバインドしています)、DataItemをDataRowにキャストしないでください。

は、としてあなた行のデータを取得してください:

var dataItem = e.Item.DataItem; 
// For example get your CustomerID as you defined at your anonymous type : 
string customerId = dataItem.CustomerID; 
+9

だから私は2年遅れてのゲームによこれはコンパイルされないことに誰も気付いていないのですか? "var"は設計時にデータ型を推測しようとしますが、匿名型なのでこれを行うことはできません。このコードはエラー "あなたが2番目の行に 'CustomerID'シンボルを解決できません。RobDのメソッドは、.NET 4.0と仮定して正しいです。 – Scott

35

最後に、それを見つけ、次のような単純なだった:

long customerID = long.Parse(DataBinder.Eval(e.Item.DataItem, "CustomerID").ToString()); 
33

この.NET 4.0のアプローチは確かにも非常にクールです!

public void PersonDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     dynamic person = e.Item.DataItem as dynamic; 

     string name = person.Name; 
     int age = person.Age; 
    } 
} 

すべてのクレジット: http://www.kristofclaes.be/blog/2010/08/12/anonymous-types-and-the-itemdatabound-event/

ページは現在、エラー404を示しているので、こちらのページには、ウェイバックマシンからです: Anonymous types and the ItemDataBound event (Archived version)

+0

リンクにエラーが表示されます:> 404ファイルが見つかりません – AsifAli72090

+0

https://kristofclaes.github.io//blog/2010/08/12/anonymous-types-and-the-itemdatabound-event /が見つかりません –

関連する問題