Data GridView C#在运行时隐藏列

时间:2014-02-05 06:15:24

标签: c# winforms datagridview datatable

我有一个datagridview名称是“grdShowDeatils”,一个名为“objShowCampaignStats”的类,其方法返回一个DataTable名称的方法是“GetCapmaignsStatsDetails()”

{
grdShowDeatils.DataSource = AnyDataTable;
}

我的问题是dataTable有三列,我想在运行时隐藏第二列,它不应该对用户可见。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

使用此

{
    grdShowDeatils.DataSource = objShowCampaignStats.GetCapmaignsStatsDetails();
    grdShowDeatils.Columns[1].Visible = false;
}

答案 1 :(得分:2)

您可以编写以下代码

{    
    grdShowDeatils.DataSource = objShowCampaignStats.GetCapmaignsStatsDetails();
    grdShowDeatils.Columns[3].Visible = false;
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[0].Visible = false;
    }

答案 2 :(得分:0)

假设您的DataTable返回三列以下,

姓名,地址,电话号码您想要隐藏地址栏

.aspx页面,您可以按照以下方式绑定DataGridView,

<asp:DataGridView ID ="grdShowDeatils" runat="server">
 <Columns>
  <asp:BoundColumn HeaderText="Name" DataFeild="Name"/>
  <asp:BoundColumn HeaderText="Address" DataFeild="Address" Visible = "False"/>
  <asp:BoundColumn HeaderText="Phone No." DataFeild="PhoneNo"/>
 </Columns>
</asp:DataGridView>

OR

您可以在DataGridView的RowDataBound事件中编码,如下所示,

protected void grdShowDeatils_RowDataBound(object sender, GridViewRowEventArgs e)
{
   e.Rows.Cells[1].Visible = false;
}

答案 3 :(得分:0)

我认为这是asp.Net Web Forms - 你不能只设置grdShowDeatils.autoGenerateColumns =“false”,然后只需指定第1列和第3列(通过设计器或编程)?