ASP.NET Repeater - 将Item评估为int?

时间:2010-04-16 20:09:27

标签: asp.net repeater

我正在尝试根据项目模板中数据绑定集合(从LINQ到SQL)中的值设置表格行的样式,但它不起作用。

这是我到目前为止所做的:

<ItemTemplate>
    <% 
        string style = String.Empty;
        if ((string)DataBinder.Eval(Quotes.Cu, "Status") == "Rejected")
            style = "color:red;";
        else if ((string)Eval("Priority") == "Y")
            style = "color:green;";

        if (style == String.Empty)
            Response.Write("<tr>");
        else
            Response.Write("<tr style=\"" + style + "\"");                            
    %>

    <td>
        <%# Eval("QuoteID") %>
    </td>
    <td>
        <%# Eval("DateDue", "{0:dd/MM/yyyy}") %>
    </td>
    <td>
        <%# Eval("Company") %>
    </td>
    <td>
        <%# Eval("Estimator") %>
    </td>
    <td>
        <%# Eval("Attachments") %>
    </td>
    <td>
        <%# Eval("Employee") %>
    </td>
    </tr>
</ItemTemplate>

编辑:

对不起,我没有说清楚这一点!问题是,它引发了一个错误:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

2 个答案:

答案 0 :(得分:1)

请更改此

<% 
   string style = String.Empty;
  ....
%>

通过

<%#
   string style = String.Empty;
  ....
%>

请注意,我添加了#

答案 1 :(得分:0)

哪个部分是int?我没看到int部分是如何应用的?如果对象真的是一个int,你总是可以把它作为(int)Eval(“Value”)转换为int,或者如果是一个字符串,你可以使用int.Parse或int.TryParse进行转换(如果它可能的话,它会更安全)该字段不是int)。

HTH。