日期:2014-05-17  浏览次数:20471 次

ListView1里LinkButton的显示与隐藏
我想实现当“sname”等于Session["name"]时候 显示按钮 否则隐藏,但是我这么写 却报错:

Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。

C# code


                    <asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound">
                        <ItemTemplate>
                                    <% if (Session["name"].ToString() == Eval("sname").ToString())
                                       {
                                    %>
                                    <asp:LinkButton Visible="False" Style="margin-left: 10px;" ID="lnkDelete"     runat="server" OnClick="Delete">删除</asp:LinkButton>
                                    <% 
                                        }
                                    %>

                        </ItemTemplate>
                    </asp:ListView>






------解决方案--------------------
绑定很简单啊

C# code
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
  if (e.Item.ItemType == ListViewItemType.DataItem)
  {
    LinkButton lnkDelete = e.Item.FindControl("lnkDelete") as LinkButton;
    if (lnkDelete != null)
    {
      if (Session["name"] != null && Session["name"].ToString() == DataBinder.Eval(e.Item.DataItem, "sname").ToString())
      {
        lnkDelete.Visible = false;
      }
      else
      {
        lnkDelete.Visible = true;
      }        
    }
  }
}