我试图在我的 GridView 上隐藏(或显示)一个 EDIT 命令字段按钮。为此,我遵循此处的示例(在 Gridview 中有条件地隐藏 CommandField 或 ButtonField),效果很好。我将该字段转换为模板字段,命名为按钮,果然可以正常工作(按预期隐藏/显示)。耶!
一个问题。当我单击 EDIT 按钮时,我没有进入编辑模式,实际上我得到了一个错误。错误是“对象引用未设置为对象的实例”。这是在“btnEdit.Visible = false;”的行上。
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Hide the edit button when some condition is true
// for example, the row contains a certain property
if (CanEdit == false)
{
System.Web.UI.WebControls.LinkButton btnEdit = (System.Web.UI.WebControls.LinkButton)e.Row.FindControl("btnEdit");
btnEdit.Visible = false;
}
else
{
System.Web.UI.WebControls.LinkButton btnEdit = (System.Web.UI.WebControls.LinkButton)e.Row.FindControl("btnEdit");
btnEdit.Visible = true;
}
}
我确实有另一种单独的技术来隐藏 EDIT 按钮,该按钮用于在 RowDataBound 事件中满足条件时使用 .Controls.Clear() 。完整的一行是“e.Row.Cells[e.Row.Cells.Count - 1].Controls.Clear();” 问题是,当我单击 EDIT 按钮并进入 EDIT 模式时,UPDATE 和 CANCEL 按钮不存在。我假设他们在上一个命令中被清除了。
if (CanEdit == false)
{
//disble row editing
//e.Row.Cells[e.Row.Cells.Count - 1].Controls.Clear();
}
所以我的问题可能是其中之一。如何将字段转换为模板字段,使编辑按钮可见并在单击按钮时进入编辑模式。或者,我如何使用 hte .Controls.Clear() 方法,但只清除编辑按钮?
太感谢了!