-1

I have a list view that loads with the page, but i want to hide a button with a condition.

I get this error message Object reference not set to an instance of an object.

Even thought the commandName has a value.The code is under the listview databound.

This my code:

protected void PostListView_ItemDataBound(object sender, ListViewItemEventArgs e)
    {

        if (e.Item == null)
            return;

        MembershipUser currentUser = Membership.GetUser();
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
        Button btn1 = (Button)e.Item.FindControl("deleteButton");

        if (currentUserId.ToString() == btn1.CommandName.ToString())
        {
            Button hdn = (Button)e.Item.FindControl("deleteButton");
            btn1.Visible = false;
        }

        else
        {
            Button hdn = (Button)e.Item.FindControl("deleteButton");
            btn1.Visible = false;
        }
    }



<asp:ListView ID="PostListView" runat="server" DataSourceID="POSTDataSource2" OnItemDataBound="PostListView_ItemDataBound" OnLoad="PostListView_Load">
                                <AlternatingItemTemplate>

                                    <p class="text-muted">
                                                    <asp:Button ID="deleteButton" runat="server" Text="Delete" CssClass="btn btn-info btn-xs pull-right" Width="50px" CommandName='<%# Eval("UserId") %>'  />
                                    </p>
                                </AlternatingItemTemplate>
Musa
  • 21
  • 3

1 Answers1

0

You have to check the ItemType in ItemDataBound:

protected void PostListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        MembershipUser currentUser = Membership.GetUser();
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
        Button btn1 = (Button)e.Item.FindControl("deleteButton");

        if (currentUserId.ToString() == btn1.CommandName.ToString())
        {
            Button hdn = (Button)e.Item.FindControl("deleteButton");
            btn1.Visible = false;
        }

        else
        {
            Button hdn = (Button)e.Item.FindControl("deleteButton");
            btn1.Visible = false;
        }
    }
}
Tim Schmelter
  • 450,073
  • 74
  • 686
  • 939