none
listview绑定使用linq取得的数据是匿名类型,在itemcreated事件中取得dataitemview.dataitem怎么取得里面的值 RRS feed

  • 问题

  • 数据源如下
    var products =  from m in db.t_Mounting
                                   where m.ExpireDate.Value > DateTime.Now && m.valid == true
                                   orderby m.AddDate descending
                                   select new { Product = m, Discount = (m.Price / m.OrignPrice) * 10 };
    2011年8月9日 13:28

答案

  • 我以Northwind資料庫為例,模擬了你的問題,可以使用下列方式來取值,程式碼片段如下,

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication1
    {
      public partial class UserIndex : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
          using (NorthwindEntities context = new NorthwindEntities())
          {
            var query = from p in context.Regions
                  select new { p.RegionID, RegionDesc = p.RegionDescription,Region = p };
            ListView1.DataSource = query;
            ListView1.DataBind();
          }
        }
    
        protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
        {
          if (e.Item.ItemType == ListViewItemType.DataItem)
          {
            if (int.Parse(DataBinder.Eval(e.Item.DataItem, "RegionID").ToString()) % 2 == 0)
            {
              ((Label)e.Item.FindControl("Label1")).Font.Underline = true;
            }
            else
            {
              Response.Write("--" + (DataBinder.Eval(e.Item.DataItem, "Region") as Region).RegionDescription + "--<br/>");
            }
          }
        }
      }
    }
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月10日 22:41