如何在gridview中禁用命令字段控件中的控件

如何在gridview中查找命令字段控件。

在不在行数据绑定中的方法中。

到目前为止,我已经使用了这个编码,但我找不到控件。

   

源代码:

 ImageButton edit = (ImageButton)EmployeeDetails.FindControl("Image"); edit.Enabled = false; 

你可以用,禁用列本身,

 GridView1.AutoGenerateEditButton = false; 

来自页面后面的代码。


或者您可以使用ItemTemplate而不是CommandField,

      

在代码后面,您可以遍历GridView行并禁用每个LinkBut​​ton。

 foreach(GridViewRow gvr in GridView1.Rows) { LinkButton row = gvr.FindControl("id") as LinkButton; row.Enabled = false; } 

第一编辑:

我尝试了我的第二个解决方 但是,在使用foreach之前,请确保已填充GridView 。 否则, GridView.Rows.Count可能为0。


第二编辑:

这也适用于CommandField 。 在GridView中将0替换为CommandField的位置。

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[0].Enabled = false; } } 

你错过了指定行

就像是 :

 ImageButton edit = (ImageButton)EmployeeDetails.Rows[0].Cells[0].FindControl("Image"); edit.Enabled = false; 

如果要禁用包含imageButton的列,可以执行以下操作:

 EmployeeDetails.Columns[0].Visible = false; 

试试这个:

 try to hide controls at DataBound or RowDataBound event of GridView protected void EmployeeDetails_DataBound(object sender, EventArgs e) { ImageButton edit = (ImageButton)EmployeeDetails.Row.Cells[0].FindControl("Image"); edit.Visible = false; edit.Enabled = false; //OR use this line } 

可以通过以下方式禁用特定列

 EmployeeDetails.Columns[0].Visible = false; 

希望这可以帮助。

我有一个类似的问题。 我只是在BindData()函数中禁用了Column的视图

 GridView1.Columns[0].Visible = false; 

这对我有用,因为我的第一列是编辑专栏,我必须仅为特定用户启用它。

祝好运!

将其强制转换为DataControlFieldCell,然后将Enabled设置为false。

其中:row.Controls [0]是您的CommandField控件

 foreach (GridViewRow row in ManageDNXGridView.Rows) { DataControlFieldCell editable = (DataControlFieldCell)row.Controls[0]; editable.Enabled = false; }