为了账号安全,请及时绑定邮箱和手机立即绑定

GridView通过代码隐藏列

GridView通过代码隐藏列

弑天下 2019-12-03 14:21:19
我想在我的GridView中隐藏ID列,我知道代码GridView1.Columns[0].Visible = false;但令人惊讶的是,我的GridView列的count属性为0!虽然我可以在中看到数据GridView,所以有什么想法吗?谢谢,更新:这是填充该方法的完整代码 GridViewpublic 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;}
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

GridView.Columns.Count当GridView的AutoGenerateColumns属性设置为时,它将始终为0 true(默认值为true)。


您可以显式声明列并将AutoGenerateColumns属性设置为false,也可以在后面的代码中使用它:


GridView.Rows[0].Cells.Count


一旦绑定了GridView数据即可获取列数,或者这样:


protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)

{

    e.Row.Cells[index].Visible = false;

}

使用GridView的RowDataBound事件将列设置为不可见。


查看完整回答
反对 回复 2019-12-03
?
千巷猫影

TA贡献1829条经验 获得超7个赞

您可以通过查询datacontrolfield集合以获取所需的列标题文本并将其可见性设置为true来隐藏特定的列。


((DataControlField)gridView.Columns

               .Cast<DataControlField>()

               .Where(fld => (fld.HeaderText == "Title"))

               .SingleOrDefault()).Visible = false;


查看完整回答
反对 回复 2019-12-03
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我看到的一些答案说明了如何使单元格的内容不可见,而不是如何隐藏整个列,这是我想要做的。


如果您有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;

    }

}

这可能不是OP所寻找的,但这是我发现自己问同样的问题时所寻找的解决方案。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 597 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信