Работа с GridView и ItemTemplates (ASP.net/C#) - PullRequest
1 голос
/ 09 января 2009

У меня есть GridView, который заполняется через базу данных, внутри тегов GridView, которые у меня есть:

<Columns>
  <asp:TemplateField>
    <ItemTemplate><asp:Panel ID="bar" runat="server" /></ItemTemplate>
  </TemplateField>
</Columns>

Теперь я хочу иметь возможность (в коде) применить атрибут width к панели «bar» для каждой сгенерированной строки. Как бы я нацелился на эти строки? Атрибут width будет уникальным для каждой строки в зависимости от значения в базе данных для этой строки.

Ответы [ 4 ]

3 голосов
/ 09 января 2009
<asp:Panel ID="bar" runat="server" Width='<%# Eval("Width") %>' />

Если хотите, вы можете изменить Eval("Width") на выражение, которое вычисляет ширину.

0 голосов
/ 10 января 2009

Я предлагаю вам присоединить обработчик обратного вызова к событию OnRowDataBound. Каждая привязка строки будет запускать событие, которое вы можете обработать в обработчике обратного вызова.

В этом обработчике обратного вызова вы можете получить информацию о привязке элемента к строке и применить ширину в соответствии со значениями в вашей базе данных.

0 голосов
/ 10 января 2009

Я предлагаю вам не использовать Eval, если можете, потому что он немного медленнее. В таких случаях я обычно предпочитаю приводить мой источник данных к его базовому типу:

<Columns>
  <asp:TemplateField>
    <ItemTemplate>
    <asp:Panel ID="bar" runat="server" Width='<%# ((yourCustomData)Container.DataItem).Width %>' />
    </ItemTemplate>
  </TemplateField>
</Columns>

, где yourCustomData - это тип строки вашего источника данных (т.е. элемент List<>).

Этот метод действительно быстрее, чем Eval.

Редактировать: о, не забудьте включить на страницу ссылку на пространство имен, содержащее yourCustomData

<%@ Import Namespace="yourNameSpace.Data" %>
0 голосов
/ 09 января 2009

Вы захотите обработать событие GridView RowCreated. Это происходит сразу после того, как GridView создает каждую строку и предоставляет вам программный доступ к строке и всем элементам управления, содержащимся в ней.

Вот страница MSDN о событии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...