【问题标题】:ItemTemplate with call to Method调用方法的 ItemTemplate
【发布时间】:2013-11-14 03:32:16
【问题描述】:

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

<ItemTemplate>
    <asp:Label ID="lblFixtureType" runat="server" Text='<%# FixtureType(DataBinder.Eval("FixtureType")) %>'></asp:Label>
</ItemTemplate>

我喜欢做的是传递 FixtureType 的值,然后在其后附加“A”。我收到以下消息:方法 'Eval' 没有重载需要 1 个参数

protected string FixtureType(int FixtureType)
{
  return Convert.ToString(FixtureType) + "A";
}

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    错误不在于您的方法,错误在于对DataBinder.Eval() 的调用。 (调用堆栈永远不会到达您的方法,因为它无法首先评估您的方法的参数。)如错误所示,Eval()doesn't have an overload which accepts only one argument

    也许你是这个意思?:

    FixtureType(DataBinder.Eval(Container.DataItem, "FixtureType"))
    

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

    【讨论】:

      【解决方案2】:

      尝试以下语法并更新方法的签名以采用object 而不是int

      <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";
      }
      

      【讨论】:

        【解决方案3】:

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

        <ItemTemplate>
            <asp:Label ID="lblFixtureType" runat="server" Text='<%# FixtureType(Convert.ToInt32(Eval("FixtureType"))) %>'></asp:Label>
        </ItemTemplate>
        

        <ItemTemplate>
            <asp:Label ID="lblFixtureType" runat="server" Text='<%# Eval("FixtureType").ToString() + "A" %>'></asp:Label>
        </ItemTemplate>
        

        <ItemTemplate>
            <asp:Label ID="lblFixtureType" runat="server" Text='<%# Eval("FixtureType", "{0}A") %>'></asp:Label>
        </ItemTemplate>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多