1

我正在构建一个用户控件,它将在页面上重复可变次数。我正在尝试确定处理要加载到控件中的数据的最有效方法。为了简单起见,假设它的结构如下:

<table>
    <tr>
        <td>Header Item</td>
    </tr>
    <tr>
        <td>Body Item n</td>
    </tr>
    <tr>
        <td>Body Item n+1</td>
    </tr>
    <tr>
        <td>Body Item n+2</td>
    </tr>
    <tr>
        <td>etc.</td>
    </tr>
    <tr>
        <td>Footer Item</td>
    </tr>
</table>

将加载到此控件中的所有数据都来自 SQL 查询。Body 项目将在控件的每次迭代中发生变化,但 Header 和 Footer 项目将是相同的,这就是我试图在我可以看到的几个选项之间做出决定的地方。

  1. 将查询构建到控件本身的代码中,并为控件的每次迭代重复它,或者:
  2. 从将使用控件的 .aspx.cs 页面查询数据,并在创建控件时将它们作为属性传递。
  3. ?

选项 1 似乎效率很低。如果我们只讨论两个项目,那么我可能只是倾向于接受效率低下,但我们谈论的更多。

选项 2 似乎是合理的,但我不知道这是否真的比选项 1 更好。

想法?其他选择?

4

1 回答 1

0

使用Repeater控件

看看这里: http:
//msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater (v=vs.80).aspx?cs-save-lang=1&cs-lang= csharp#code-snippet-1

<asp:Repeater runat="server">

 <HeaderTemplate>
  <table>
   <tr>
    <td>Header Item</td>
   </tr>
 </HeaderTemplate>

 <ItemTemplate>
  <tr>
   <td>Body Item <%# Eval("Number") %></td>
  </tr>
 </ItemTemplate>

 <FooterTemplate>
   <tr>
    <td>Footer Item</td>
   </tr>
  </table>
 </FooterTemplate>

</asp:Repeater>
于 2012-12-21T09:04:25.160 回答