Переменное количество столбцов с контролем повторителя ASP.NET 3.5 - PullRequest
1 голос
/ 14 ноября 2011

Одна из страниц содержит элемент управления Repeater.Ранее я привязывал статическое число столбцов к повторителю.Например, моя хранимая процедура вернет имя, возраст, зарплату, телефон, DOB сотрудника.Поэтому я мог бы использовать, как показано ниже:

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

Теперь Я хочу изменить дизайн.У меня есть страница настроек, и я скажу, какие столбцы должны быть перечислены здесь.Некоторое время мне нужно перечислять только Имя и Возраст и т. Д. Поэтому я не могу жестко кодировать дизайн Repeater.Каков наилучший способ справиться с ситуацией?Хорошо ли динамически добавлять метки в шаблон элемента?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Один из подходов - иметь пользовательский элемент управления для каждого поля, которое может отображаться. Один и тот же пользователь контролирует все настраиваемое поле или отдельный элемент управления для каждого поля. Затем, когда вы привязываете повторитель, вы можете соответственно установить свойство Visible элемента управления.

Это то направление, куда вы хотели пойти?

1 голос
/ 14 ноября 2011

Вы можете использовать GridView с TemplateFields. В зависимости от настроек вы показываете или скрываете столбцы. Здесь вы найдете документацию TemplateField .

EDIT: еще один элемент управления, более гибкий, чем Repeater, - ListView

Если вы хотите использовать Repeater Control, вы можете использовать заполнители для включения и выключения отдельных столбцов. Просто поместите каждый столбец в PlaceHolder и включите и выключите видимость. Вместо PlaceHolder вы, конечно, можете также использовать UserControl.

РЕДАКТИРОВАТЬ 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...