首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用方法的ItemTemplate

调用方法的ItemTemplate
EN

Stack Overflow用户
提问于 2013-11-13 18:44:51
回答 3查看 1.3K关注 0票数 1

我想要做的是从ItemTemplate内部调用一个方法。我有以下几点:

代码语言:javascript
复制
<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%# FixtureType(DataBinder.Eval("FixtureType")) %>'></asp:Label>
</ItemTemplate>

我喜欢做的是传递FixtureType的值,然后在它后面添加"A“。我得到以下消息:方法'Eval‘没有重载,只需1个参数

代码语言:javascript
复制
protected string FixtureType(int FixtureType)
{
  return Convert.ToString(FixtureType) + "A";
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-13 18:49:32

错误不在您的方法中,错误在对DataBinder.Eval()的调用中。(调用堆栈永远不会到达您的方法,因为它无法首先计算方法的参数。)如错误所示,Eval() 不具有只接受一个参数的重载

也许你是说这个?

代码语言:javascript
复制
FixtureType(DataBinder.Eval(Container.DataItem, "FixtureType"))

除此之外,你很有可能会想要进行一些类型检查。DataBinder.Eval()返回一个object,您的方法需要一个int。您可能希望在将值传递给方法之前将其转换为int,或者将方法更改为接受object,然后在内部将其转换为int

票数 1
EN

Stack Overflow用户

发布于 2013-11-13 18:50:27

尝试以下语法&更新方法的签名以接受object而不是int

代码语言:javascript
复制
<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%#FixtureType(DataBinder.Eval(Container.DataItem, "FixtureType")) %>'></asp:Label>
</ItemTemplate>

protected bool FixtureType(object FixtureType)
{
  return Convert.ToString(FixtureType) + "A";
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-13 18:57:00

有几种方法可以做到这一点:

代码语言:javascript
复制
<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%# FixtureType(Convert.ToInt32(Eval("FixtureType"))) %>'></asp:Label>
</ItemTemplate>

代码语言:javascript
复制
<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%# Eval("FixtureType").ToString() + "A" %>'></asp:Label>
</ItemTemplate>

代码语言:javascript
复制
<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%# Eval("FixtureType", "{0}A") %>'></asp:Label>
</ItemTemplate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19961868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档