GridView の EDIT コマンド フィールド ボタンを非表示 (または表示) にしようとしています。これを行うには、ここの例 ( Gridview で CommandField または ButtonField を条件付きで非表示にする) に従っています。フィールドをボタンという名前のテンプレートフィールドに変換し、十分に機能することを確認しました(期待どおりに非表示/表示)。わーい!
ただし、1 つの問題があります。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;
}
}
RowDataBound イベントで条件が満たされたときに .Controls.Clear() を使用する EDIT ボタンを非表示にする別の手法がありました。その完全な行は、「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();
}
したがって、私の質問はどちらかになります。フィールドをテンプレート フィールドに変換し、編集ボタンを表示して、ボタンをクリックしたときに編集モードにするにはどうすればよいですか。または、どうすれば .Controls.Clear() メソッドを使用できますが、編集ボタンのみをクリアできますか?
どうもありがとう!