標籤:os 資料 for re 代碼 c
在asp.net中的資料繫結中,我們經常會用到Eval,不過大家都知道Eval綁定是通過反射來實現的, 而反射勢必會對效能造成一定的影響。不過有兩種替代的方式來實現綁定資料,對效能略有提高。
1 當資料來源為DataTable時,用下面的方式:
後台代碼
protected void Page_Load(object sender, EventArgs e){ DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(System.String)); dt.Columns.Add("Age", typeof(System.Int32)); for (int i = 0; i <= 20; i++) { DataRow dr = dt.NewRow(); dr[0] = "oec2003_" + i.ToString(); dr[1] = i + 20; dt.Rows.Add(dr); } rptUser.DataSource = dt; rptUser.DataBind();}
前台代碼
<asp:Repeater ID="rptUser" runat="server"> <ItemTemplate> 姓名:<%# ((DataRowView)(Container.DataItem))["Name"] %> 年齡:<%# ((DataRowView)(Container.DataItem))["Age"]%><br /> </ItemTemplate></asp:Repeater>
2 當資料來源為泛型類時,用下面的方式。
後台代碼
protected void Page_Load(object sender, EventArgs e){ List<User> user = new List<User>(); for (int i = 0; i < 10; i++) { user.Add(new User(i, "oec2003")); } rptUser.DataSource = user; rptUser.DataBind();}
前台代碼
<asp:Repeater ID="rptUser" runat="server"> <ItemTemplate> 姓名:<%# (Container.DataItem as User).Name %> 年齡:<%# (Container.DataItem as User).Age%><br /> </ItemTemplate></asp:Repeater>
經過測試在10w以上資料量的時候效能差別才比較明顯,而我們平時做資料繫結的時候通常都是用的分頁預存程序或其他的分頁方式,每頁最多幾十條資料,所以我認為Eval在效能上的損耗並不構成效能瓶頸。