Variable number of columns with Repeater control ASP.NET 3.5

让人想犯罪 __ 提交于 2019-12-11 06:49:26

问题


One of pages contains a Repeater control. Earlier, I bind a static number of columns to the repeater. For example, my stored procedure will return Name,Age,Salary,Phone,DOB of an employee. So I could use like the following

<ItemTemplate>
 <tr>
   <td>
     <asp:Label ID="lblSalary" runat="server" Text='<%#Eval("Salary")%>' ToolTip="Salary"></asp:Label>
   </td>
 </tr>
</ItemTemplate>

Now I want to change the design. I have a settings page and I will say which columns should be listed here. Some time I need to list only Name and Age etc. So I can not hard code the design of Repeater. What is the best way to handle the situation ? Is it good to dynamically add labels to the item template?


回答1:


One approach is to have a user control for each field that may be displayed. Whether the same user controls for all the field that is configurable or a separate control for each field. Then when you bind the repeater you can set the Visible property of the control accordingly.

Is that the direction you wanted to go?




回答2:


You could use a GridView with TemplateFields. Depending on the settings you show or hide the columns. Here you find a documentation of the TemplateField.

EDIT: Another control with more flexibility than Repeater is the ListView.

If you want to use the Repeater Control you can use placeholders to turn on and off single columns. Just put every column into a PlaceHolder and turn on and off the visibility. Instead of a PlaceHolder you can of course use a UserControl as well.

EDIT 2: Solution with PlaceHolder could look like this:

<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> 


来源:https://stackoverflow.com/questions/8118427/variable-number-of-columns-with-repeater-control-asp-net-3-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!