在列表视图中隐藏按钮 ASP.net C#

Hide button in listview ASP.net C#

我想在列表视图中隐藏一个按钮。

如果查询结果为= commandArgument,条件是隐藏按钮。

错误信息是:-

Object reference not set to an instance of an object

-- 字符串按钮= Button.CommandArgument**;

这是按钮

<asp:Button ID="addFollowerButton" runat="server" Text="Add as Follower" 
 CommandArgument='<%# Eval("ProfileId") %>' OnClick="acceptRequest_Click" 
 CssClass="btn btn-info btn-xs pull-right" Width="135px" />

这是代码

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        // request Query string
        var querystring = Request.QueryString["ProjectId"];
        var Button = sender as Button;            
        string connectionString = 
       ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

       string select = "Select ProfileId from Project_Follower Where ProjectId = @ProjectId";

       using (SqlConnection myConnection = new SqlConnection(connectionString))
        {
            myConnection.Open();
            SqlCommand myCommand = new SqlCommand(select, myConnection);
            myCommand.Parameters.AddWithValue("@ProjectId", querystring);

            myCommand.ExecuteNonQuery();

            if (e.Item.ItemType == ListViewItemType.DataItem)
            {
                string button = Button.CommandArgument;
                if (myCommand.ExecuteScalar().ToString() == button)
                {
                    Button hdn = (Button)e.Item.FindControl("addFollowerButton");
                    hdn.Visible = false;
                }
            }
        }

您在代码中将 sender 对象转换为 Button。但是当您在 ListView1_ItemDataBound-eventhandler 中执行此操作时,sender 将不是 Button 类型。这导致对 var Button.

的 NULL 赋值

稍后在您的代码中,您试图获取那个 Button-实例的 CommandArgument-属性,它给您 NullReferenceException,因为变量 Button 是空。

也许您可以从 ListViewItemEventArgs 中获取有关要隐藏的按钮的信息。看看:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewitemeventargs.item%28v=vs.110%29.aspx

您需要先找到嵌套在 ListView

中的按钮
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{

      if(e.Item == null)
         return;

      Button btn1 = (Button)e.Item.FindControl("YourButtonID");
 }

为此,您需要为您的按钮添加特定 ID:

 <asp:Button ID="addFollowerButton" runat="server" ID="YourButtonID" Text="Add as Follower" CommandArgument='<%# Eval("ProfileId") %>' OnClick="acceptRequest_Click" CssClass="btn btn-info btn-xs pull-right" Width="135px" />

之后您可以使用 ItemDataBound 中的按钮做任何您想做的事情。您可以拨打:

btn1.Visible = false;//this will make the button not visible
string cmdArgument = btn1.CommandArgument;// this will take commandArgument of the button.

编辑:

应该是Button btn1 = (Button)e.Item.FindControl("YourButtonID");