2009-08-28 51 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> 

不過,我不希望輸出的第一錨刪除操作如果當前綁定的用戶對象具有相同的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屬性,當它爲false時,它從最終的HTML中省略了控件。