2011-06-08 25 views
0

我有一個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自動做到這一點,那麼我不必擔心它。有什麼想法嗎?

回答

1

的RowDataBound並在模板字段內聯代碼只對活動頁面執行(在你的案件10行)

如果你沒有做任何事情複雜我看不出有什麼問題,保持它作爲內嵌代碼模板場。

+0

好的,多數民衆贊成在知道。如何派生的屬性。我有一個屬性P2即P1 * 1.3,也是在模板列。網格僅對10個可見行進行計算嗎? – 2011-06-08 19:29:54

+0

不確定你的派生屬性是什麼意思,但是如果它在模板列中,它只對活動頁面中的每一行執行一次(10行) – Magnus 2011-06-08 19:32:09

+0

好吧,我只是想讓P2從P1中計算出來。再次感謝。 – 2011-06-08 19:33:55