2011-09-05 40 views
3

我有一个内容占位符中的动态内容放置在绑定到对象数据源的数据列表中。问题是我需要检查EVAL的值。这里是代码:EVAL IN C#asp.net

<asp:DataList ID="DataList1" runat="server" CellPadding="4" 
       DataSourceID="ObjectDataSource1" ForeColor="#333333"> 
       <AlternatingItemStyle BackColor="White" /> 
       <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
       <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
       <ItemStyle BackColor="#EFF3FB" /> 
       <ItemTemplate> 


        <a href="<%# Eval("VendorLink") %>"> <%# Eval("Vendor") %></a> 
        <br /> 
        <a href="<%# Eval("TitleLink") %> "><%# Eval("Title") %></a> 
        <br /> 
        <asp:Label ID="DescLabel" runat="server" Text='<%# Eval("Desc") %>' /> 
        <br /> 
        <asp:Label ID="DetailsLabel" runat="server" Text='<%# Eval("Details") %>' /> 
        <br /> 
        <asp:Label ID="RptIDLabel" runat="server" Text='<%# Eval("RptID") %>' /> 
        <br /> 

        <asp:Label ID="LinksLabel" runat="server" Text='<%# Eval("Links") %>' /> 
        <br /> 
        <br /> 

       </ItemTemplate> 
       <SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
      </asp:DataList> 

我想说

<%if(Eval("RptID") =="SomeString") { Eval("rtpid") = "Pass");}%> 

我需要的检查是在aspx页面,而不是aspx.cs页面!如何执行检查?

回答

4

代码的功能,您可以检查象下面这样:

<%# Eval("VenderLink") == "somestring" ? "p %> 
2

你需要用单引号包裹你的表达,否则它是无效的SGML。解析器认为该属性在第二个"结束。

<a href='<%# Eval("VendorLink") %>'> <%# Eval("Vendor") %></a> 

你不能在绑定上下文使用IF contructs,只有绑定表达式。您总是可以挂钩ItemDataBound,并将您的逻辑放在服务器端(或将其移至代码隐藏方法中)。

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{  
     var descLabel= e.Item.FindControl("RptIDLabel") as Label; 
     var data = (MyDataType)e.Item.DataItem; 
     if (data.RptID == "SomeString") 
     { 
      descLabel.Text = "Pass"; 
     } 
     ...  
} 
7

你可以这样做:

<%# (Eval("UserName") == "Test 1") ? "no.png" : "yes.gif" %> 
2

Eval("RptID")它是一个函数,所以你不能做Eval("rtpid") = “东西”;

如果你需要编写逻辑,你总是可以在后面的代码中创建一个保护或公共函数,这将返回你所需要的字符串。

你可以这样调用

<%# TransformString(Eval("RptID")) %> 

功能和背后

protected string TransformString(object rptid) 
{ 
    //some code goes here 
} 
3

试试这个,

<%# string.Compare(Eval("RptID").ToString(), "SomeString") == 0 ? Eval("RptID") : "Nothing" %>