如何在BoundField元素中的DataField上调用字符串扩展方法?

时间:2011-10-20 11:46:43

标签: c# asp.net .net data-binding extension-methods

想象一下,我在名为Shorten()的字符串类型上引入了一个扩展方法,它只获取前50个字符并返回它。

如果我想在GridView的绑定字段上调用此方法,调用它的最简单方法是什么,以便在屏幕上看到消息的缩短版本。

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

2 个答案:

答案 0 :(得分:1)

在.aspx文件的顶部,导入包含扩展方法的类所在的命名空间:

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

然后:

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

答案 1 :(得分:1)

将该列设为模板列:

<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