我有一個gridview包含大約16個ItemTemplate列。每列中的值都是十進制屬性。在每一列中,我正在做一些有條件的邏輯,以顯示N/A或實際值等,等喜歡的東西,使用gridview的條件邏輯的性能RowDataBound vs ItemTemplate/Regular databind
<asp:TemplateField HeaderText="Test" ItemStyle-CssClass="test">
<ItemTemplate>
<%# Eval("TestExpense", "{0:n}").ToString() == "-1.00" ? "N/A" : "$" + Eval("TestExpense", "{0:n}")%>
</ItemTemplate>
</asp:TemplateField>
網格返回多行,說在大多數情況下30,000。有網格分頁,因此一次只能看到10行。 (是的,我確實把數據庫中的所有行都帶回來,SQL中沒有分頁,搜索很複雜,需要時間)
問題是,我應該在RowDataBound事件中做這個邏輯,我可以說這個邏輯只有當該行可見時。這確保了一次只有10個可見行(對於活動頁面)使用此邏輯進行處理。如果我做一個普通的數據綁定,那麼datagrid是否足夠智能,可以僅爲10行執行ItemTemplate邏輯,或者是否可以爲所有30,000行執行ItemTemplate邏輯。這將是不必要的。
要添加到此問題,我有一些模板列從其他屬性派生。如果我做一個常規的數據綁定,網格是通過每行的所有列計算的,還是隻針對可見行進行計算。
我相信如果我使用RowDataBound事件,我可以控制所有這些。但另一種選擇更方便。如果gridview自動做到這一點,那麼我不必擔心它。有什麼想法嗎?
好的,多數民衆贊成在知道。如何派生的屬性。我有一個屬性P2即P1 * 1.3,也是在模板列。網格僅對10個可見行進行計算嗎? – 2011-06-08 19:29:54
不確定你的派生屬性是什麼意思,但是如果它在模板列中,它只對活動頁面中的每一行執行一次(10行) – Magnus 2011-06-08 19:32:09
好吧,我只是想讓P2從P1中計算出來。再次感謝。 – 2011-06-08 19:33:55