我有一个数据表 info ,结构和部分数据如下id    userid   title
1     2        dfdaf
2     1        dfdafxdf
3     2        dfdafxfd
4     2        dfdafxfd
5     3        dfdafxfd
6     4        dfdafxfda我用repeater绑定了数据在.aspx中代码<asp:Repeater ID="info" runat="server">
     <ItemTemplate>
 <tr class="showinfo">
   <td><%#Eval("title")%></td>
</ItemTemplate>
</asp:Repeater>在.aspx.cs中有一个从外界获取的参数int strId = Request.QueryString["id"],我想实现的是判断,当<%#Eval("userid")%>和strId的相同的时候就显示<%#Eval("title")%>,不相同的时候不显示,这里的if该如何写呢?

解决方案 »

  1.   

    public int strId 
    {
    get {return Convert.ToInt32(Request.QueryString["id"]);}}
    <td><%# Convert.ToInt32(#Eval("userid"))==strId ?Eval("title").ToString():""%></td>
      

  2.   

    呵呵,我不直接回答你的问题了。我告诉你如何使用函数来扩展绑定表达式:当你感觉绑定表达式比较难写或者读取来不直观时,可以使用函数形式,例如:<%# MyFunction((string)Eval("userid"),(string)Eval("title"))%>然后把复杂的判断放到函数内部来展示
    :protected string MyFunction(string uid, string title)
    {
      if(uid==strId)
        return title;
      else
        return string.Empty;
    }
    实际上,你可以在自定义函数中进行任意复杂的计算,而不用写到绑定表达式上去。
      

  3.   

    <%# GetTitle(Convert.ToInt32(#Eval("userid")),Eval("title").ToString())%></td>
    public string GetTitle(int userid,string title)
    {
    return title;也可
    }
      

  4.   

    谢谢大家
    我如果想增加一个链接呢?
    当两个相等的时候显示
    <a href="nr.aspx?id=该条信息的ID"> title </a>
    请问这个该如何实现呢?
      

  5.   


    public string GetTitle(int userid,string title,int id)
    {
     return uid==strId?"<a href=\"nr.aspx?id="+id+"\"> "+title+" </a>":"";
    }