其中一个页面包含Repeater
控件。之前,我将静态数量的列绑定到转发器。例如,我的存储过程将返回员工的姓名,年龄,薪水,电话,DOB。所以我可以使用如下
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblSalary" runat="server" Text='<%#Eval("Salary")%>' ToolTip="Salary"></asp:Label>
</td>
</tr>
</ItemTemplate>
现在我想改变设计。我有一个设置页面,我会说这里应列出哪些列。有些时候我只需要列出姓名和年龄等。所以我不能硬编码Repeater
的设计。处理这种情况的最佳方法是什么?向项目模板动态添加标签是否合适?
答案 0 :(得分:1)
您可以将GridView与TemplateFields一起使用。根据您显示的设置或隐藏列。在这里您可以找到documentation of the TemplateField。
编辑:另一个比Repeater更灵活的控件是ListView。
如果要使用Repeater Control,可以使用占位符打开和关闭单列。只需将每列放入PlaceHolder并打开和关闭可见性。您也可以使用UserControl而不是PlaceHolder。
编辑2:使用PlaceHolder的解决方案可能如下所示:
<ItemTemplate>
<tr>
<asp:PlaceHolder Visible="<%# IsSalaryVisible %>" runat="server">
<td>
<asp:Label ID="lblSalary" runat="server" Text='<%#Eval("Salary")%>' ToolTip="Salary"></asp:Label>
</td>
</asp:PlaceHolder>
<asp:PlaceHolder Visible="<%# IsNameVisible %>" runat="server">
<td>
<asp:Label ID="lblSalary" runat="server" Text='<%#Eval("Name")%>' ToolTip="Salary"></asp:Label>
</td>
</asp:PlaceHolder>
</tr>
</ItemTemplate>
答案 1 :(得分:1)
一种方法是为可能显示的每个字段设置用户控件。同一用户是否控制可配置的所有字段或每个字段的单独控件。然后,当您绑定转发器时,您可以相应地设置控件的Visible
属性。
这是你想要的方向吗?