代码之家  ›  专栏  ›  技术社区  ›  dragonfly

GridView行中的条件输出

  •  1
  • dragonfly  · 技术社区  · 16 年前

    将用户对象数组数据化到GridView控件。最后一列包含“操作”锚定(编辑、删除):

        <asp:TemplateField HeaderText="Actions">
            <ItemTemplate>
                <a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
                <a href="Edit.aspx?id=<%# Eval("user_id") %>">Edit</a>
        </ItemTemplate>
        </asp:TemplateField>
    

    但是,如果当前绑定的用户对象与登录的use具有相同的ID(可与此.sessionuser.id一起使用),则不希望输出第一个anchor以删除操作。如下所示:

        <asp:TemplateField HeaderText="Actions">
            <ItemTemplate>
                <a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
                if (this.SessionUser.Id <> Eval("user_id") { <a href="Edit.aspx?id=<%# Eval("user_id") %>">Edit</a> }
        </ItemTemplate>
        </asp:TemplateField>
    

    我该怎么做?

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  1
  •   TheVillageIdiot    16 年前

    不支持:(您需要编写另一个传递用户ID的函数,并从中获取相应的字符串,如下所示:

     //in cs file
     protected string GetLink(object o)
     {
         if(!SessionUser.Id.Equals(o)) //or anyother way to compare equality
            return string.Format("<a href=\"Edit.aspx?id={0}\">",0);
         return "";
     }
    
     //in aspx file
    
     <ItemTemplate>
            <a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>&nbsp;
            <%# GetLink(Eval("user_id"))%>
     </ItemTemplate>
    
        2
  •  3
  •   Ruben    16 年前

    您可以为此使用runat=“server”控件

    <asp:TemplateField HeaderText="Actions">
        <ItemTemplate>
            <a href="Remove.aspx?id=<%# Eval("user_id") %>">Remove</a>
            <a href="Edit.aspx?id=<%# Eval("user_id") %>" runat="server"
               visible='<%# this.SessionUser.Id <> Eval("user_id") %>'>Edit</a>
        </ItemTemplate>
    </asp:TemplateField>
    

    所有服务器控件,甚至带有runat=“server”的HTML标记都具有 Visible 属性,当控件为false时,将从最终HTML中省略该控件。

        3
  •  1
  •   roman m    16 年前

    您可以使用CSS:

    <a style='visible:<%# this.SessionUser.Id <> Eval("user_id") %>' > ... </a>
    

    确保此.sessionuser.id是.cs文件中的公共变量

    推荐文章