在列表视图中隐藏按钮 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");
我想在列表视图中隐藏一个按钮。
如果查询结果为= 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
.
稍后在您的代码中,您试图获取那个 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");