c#
  • asp.net
  • gridview
  • 2013-11-13 4 views 1 likes 
    1

    То, что я пытаюсь сделать, - вызвать метод из ItemTemplate. У меня есть следующие: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"; 
    } 
    

    ответ

    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 внутри.

    1

    Пробуйте следующий синтаксис &, обновляющий подпись вашего метода, чтобы принять в 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"; 
    } 
    
    0

    Есть несколько способов сделать это:

    <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> 
    
    Смежные вопросы