GridView按代码隐藏列

amr*_*ama 34 c# asp.net

我想隐藏我的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所期待的,但是当我发现自己提出同样的问题时,这是我正在寻找的解决方案.