2009-08-28 10 views
1

ユーザーオブジェクトの配列をGridViewコントロールにデータバインディングします。最後の列が含まれている「アクション」のアンカー(編集、削除):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> 

現在バインドさUserオブジェクトはこれで利用可能(ログイン使用と同じIDを持っている場合、私はアクションを削除するために、出力最初のアンカーにないたいと思いますが。 SessionUser.Id)。このようなもの:

<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> 

どうすればいいですか?

ありがとうございます!

答えて

1

はサポートされていません:(あなたはそれがuser_idを渡し、別の関数を記述し、それから、このようなappripriate文字列を取得する必要があります。

//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> 
1

あなたはCSSを使用することができます。

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

ことを確認します。このよう.SessionUser.Idは.csファイルのパブリック変数です

3

これには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プロパティを持っています。このプロパティは最終HTMLからの制御を偽にしますが、省略します。

関連する問題