我想隐藏我的GridView中的ID列,我知道代码
GridView1.Columns[0].Visible = false;
Run Code Online (Sandbox Code Playgroud)
但令人惊讶的是,我的GridView列数为0!虽然我可以看到数据GridView,所以任何想法?
谢谢,
更新:
这是填充的方法的完整代码 GridView
public DataSet GetAllPatients()
{
SqlConnection connection = new SqlConnection(this.ConnectionString);
String sql = "SELECT [ID],[Name],[Age],[Phone],[MedicalHistory],[Medication],[Diagnoses] FROM [dbo].[AwadyClinc_PatientTbl]order by ID desc";
SqlCommand command = new SqlCommand(sql, connection);
SqlDataAdapter da = new SqlDataAdapter(command);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*les 63
GridView.Columns.Count当GridView的AutoGenerateColumns属性设置为true(默认值为true)时,它将始终为0 .
您可以显式声明列并将AutoGenerateColumns属性设置为false,或者您可以在代码隐藏中使用它:
GridView.Rows[0].Cells.Count
在绑定GridView数据后获取列计数,或者:
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[index].Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
使用GridView的RowDataBound事件设置一个不可见的列.
小智 28
这对我有帮助
this.myGridview.Columns[0].Visible = false;
Run Code Online (Sandbox Code Playgroud)
这里0是我要隐藏的列索引.
小智 24
您可以通过查询datacontrolfield集合以查找所需的列标题文本并将其可见性设置为true来隐藏特定列.
((DataControlField)gridView.Columns
.Cast<DataControlField>()
.Where(fld => (fld.HeaderText == "Title"))
.SingleOrDefault()).Visible = false;
Run Code Online (Sandbox Code Playgroud)
Ecy*_*yrb 11
我见过的一些答案解释了如何使单元格的内容不可见,而不是如何隐藏整个列,这就是我想要做的.
如果您已经AutoGenerateColumns = "false"并且实际上正在使用BoundField您要隐藏的列,Bala的答案是光滑的.但是,如果您正在使用TemplateField该列,则可以处理该DataBound事件并执行以下操作:
protected void gridView_DataBound(object sender, EventArgs e)
{
const int countriesColumnIndex = 4;
if (someCondition == true)
{
// Hide the Countries column
this.gridView.Columns[countriesColumnIndex].Visible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
这可能不是OP所期待的,但是当我发现自己提出同样的问题时,这是我正在寻找的解决方案.