Как вызвать метод расширения строки в DataField в элементе BoundField? - PullRequest
0 голосов
/ 20 октября 2011

Представьте, что я ввел метод расширения для строкового типа, называемый Shorten (), который получает только первые 50 символов и возвращает его.

Если я хочу вызвать этот метод в связанном поле GridView, чтоСамый простой способ назвать это так, чтобы на экране я увидел сокращенную версию сообщения.

<!-- TODO: How to call .Shorten() extension method on the ItemDescription in markup: --!>
<asp:BoundField HeaderText="Items" DataField="ItemDescription"...> 

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Сделайте этот столбец столбцом шаблона:

<itemtemplate>
<asp:label id="lblItemDesc" runat="server" Text='<%=string.Format(Eval("ItemDescription").ToShorten()))%>' />
</itemtemplate>

И убедитесь, что ToShorten принимает объект, а не строку, поскольку Eval возвращает объект.

* Выше код не проверен, но хорошконечно, очень близко.

Другая альтернатива:

Измените свой класс и добавьте свойство ItemDescriptionShorten, которое будет выглядеть следующим образом:

public string ItemStringDescriptionShorten { get {return ItemDescription.ToShortern();}}

Теперь привяжите это свойствовместо ItemDescription

1 голос
/ 20 октября 2011

в верхней части файла .aspx импортируйте пространство имен, в котором класс, содержащий ваш метод расширения:

<%@ Import Namespace="your namespace" %>

и затем:

<asp:TemplateField HeaderText="Items">
                    <ItemTemplate>
                        <%# Convert.ToString(Eval("ItemDescription")).Shorten() %>
                    </ItemTemplate>
                </asp:TemplateField>
...