替代Eval的兩種方式

來源:互聯網
上載者:User

標籤: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在效能上的損耗並不構成效能瓶頸。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.