There are several ways to hide a column:1) You can use your DataSet's ColumnMapping property to hide a column. 
 
     // Creating connection and command sting 
 
     string conStr = @"Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb"; 
 
     string sqlStr = "SELECT * FROM Employees"; 
 
     // Create connection object 
 
     OleDbConnection conn = new OleDbConnection(conStr); 
 
     // Create data adapter object 
 
     OleDbDataAdapter da = new OleDbDataAdapter(sqlStr,conn); 
  
     // Create a dataset object and fill with data using data adapter's Fill method 
 
     DataSet ds = new DataSet(); 
 
     da.Fill(ds, "Employees"); 
  
     // Hide the column and attach dataset's DefaultView to the datagrid control 
 
     ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden; 
 
     dataGrid1.DataSource = ds.Tables["Employees"];
 
2) Another way to hide a column is to set its width to zero. Check out the FAQ How do I set the width of a column in my DataGrid?.3) Another way to hide a column is to create a custom table style, and as you add columnstyles to your tablestyle, omit the column you want hidden. Check out the FAQ How do I add an unbound column in my bound DataGrid? to see how to create a custom table style. 见http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q708q

解决方案 »

  1.   

    看看俺的,想要几列都可以,也可用循环
    public void Init_Form(DataTable dt)
    {
    // TODO:  添加 gdzc_addition.Init_From 实现
    AdditionBLL  getdata=new AdditionBLL(); //Grid的数据连接
    if(dt==null || dt.Rows.Count<1)
    {
    try
    { //GlobleInfo.SystemInfo.PartId
    dt=getdata.GetMInfos(TxtID.Text);
    }
    catch(Exception err)
    {
    CommonMessage.ShowTipMsg("提示",ProcessException.ErrTxt(err));
    return;
    }
    }
    Grid.DataSource = dt;
    DataGridTableStyle tableStyle = new DataGridTableStyle();
    tableStyle.MappingName =dt.TableName;
    dt.Columns["additionId"].Unique=true; DataColumn dc=new DataColumn();
    dc.DataType=typeof(bool);
    dc.DefaultValue=false;//默认值false
    dc.ColumnName="del";
    dt.Columns.Add(dc); //添加新列删除列
    dt.AcceptChanges(); DataGridBoolColumn chebox = new DataGridBoolColumn(); //设第一列为删除列
    chebox.HeaderText = "";
    chebox.MappingName =dt.Columns["del"].ColumnName;
    chebox.AllowNull=false;
    chebox.TrueValue=true;
    chebox.FalseValue=false;
    chebox.NullValue=true;
    chebox.Width=20;
    //tableStyle.PreferredColumnWidth=60;
    //tableStyle.AlternatingBackColor = Color.LightGray; //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(chebox);
    DataGridTextBoxColumn aColumnTextColumn = new DataGridTextBoxColumn();
    aColumnTextColumn.HeaderText ="  编号*" ; //设置列标题
    aColumnTextColumn.Width=50;
    aColumnTextColumn.TextBox.MaxLength=2;
    aColumnTextColumn.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    aColumnTextColumn.MappingName = dt.Columns["additionId"].ColumnName ; //设置列名
    aColumnTextColumn.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ; //LightGray;设定交替行的背景色
    tableStyle.GridColumnStyles.Add(aColumnTextColumn); //增加一种自定义的column风格
    //aColumnTextColumn.TextBox.AutoSize = true;
    //tableStyle.PreferredColumnWidth =60;
    //tableStyle.PreferredColumnWidth = aColumnTextColumn.TextBox.Width; //列宽根据数据内容自适应调整tableStyle.PreferredColumnWidth =0//隐藏
    aColumnTextColumn.NullText = "";
    DataGridTextBoxColumn additionName = new DataGridTextBoxColumn();
    additionName.HeaderText ="      名称*"  ; //设置列标题
    additionName.MappingName = dt.Columns["additionName"].ColumnName ; //设置列名
    additionName.Width=100;
    additionName.TextBox.MaxLength=10;
    additionName.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ;     //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(additionName); //增加一种自定义的column风格
    //tableStyle.PreferredColumnWidth =90;
    additionName.NullText = ""; DataGridTextBoxColumn additionMode = new DataGridTextBoxColumn();
    additionMode.HeaderText ="    型号"  ; //设置列标题
    additionMode.MappingName = dt.Columns["additionMode"].ColumnName ; //设置列名
    additionMode.Width=80;
    additionMode.TextBox.MaxLength=10;
    additionMode.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ;     //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(additionMode); //增加一种自定义的column风格
    //tableStyle.PreferredColumnWidth =80;
    additionMode.NullText = ""; DataGridTextBoxColumn additionCount = new DataGridTextBoxColumn();
    additionCount.HeaderText ="数量*    "  ;
    additionCount.Alignment=HorizontalAlignment.Right;
    additionCount.MappingName = dt.Columns["additionCount"].ColumnName ; //设置列名
    additionCount.Width=60;
    additionCount.TextBox.MaxLength=10;
    additionCount.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ;     //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(additionCount); //增加一种自定义的column风格
    //tableStyle.PreferredColumnWidth =60;
    additionCount.NullText = ""; DataGridTextBoxColumn additionUnit = new DataGridTextBoxColumn();
    additionUnit.HeaderText ="  单位"  ; //设置列标题
    additionUnit.MappingName = dt.Columns["additionUnit"].ColumnName ; //设置列名
    additionUnit.Width=50;
    additionUnit.TextBox.MaxLength=10;
    additionUnit.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ;     //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(additionUnit); //增加一种自定义的column风格
    //tableStyle.PreferredColumnWidth =60;
    additionUnit.NullText = ""; DataGridTextBoxColumn additionPrice = new DataGridTextBoxColumn();
    additionPrice.HeaderText ="单价(元)*  "  ;
    additionPrice.Alignment=HorizontalAlignment.Right;
    additionPrice.MappingName = dt.Columns["additionPrice"].ColumnName ; //设置列名
    additionPrice.Width=75;
    additionPrice.TextBox.MaxLength=9;
    additionPrice.TextBox.KeyPress+=new KeyPressEventHandler(TextBox_KeyPress);
    //tableStyle.AlternatingBackColor = Color.AliceBlue ;     //设定交替行的背景色
    tableStyle.GridColumnStyles.Add(additionPrice); //增加一种自定义的column风格
    //tableStyle.PreferredColumnWidth =80;
    additionPrice.NullText = "";
    tableStyle.AllowSorting=false;
    tableStyle.RowHeadersVisible=true;
    tableStyle.RowHeaderWidth=10;
    Grid.TableStyles.Add(tableStyle);

    }
      

  2.   

    这样太麻烦了,要是数据源已经确定的话就用:
       ds.Tables[0].Columns.RemoveAt(1);
       ds.Tables[0].Columns.RemoveAt(2);
       ds.AcceptChanges();就ok了,注意:如上的这3条语句,第二句实际上是删除原来的第4条记录
      

  3.   

    新建一个tableStyles覆盖它,将目的列的宽度设置为0也是一种办法.
      

  4.   

    我还没用过tablestryles呢,每次都是手工选取需要的数据。
      

  5.   

    /隐藏某列
    // Hide the column and attach dataset's DefaultView to the datagrid control 
         ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden; 
      

  6.   

    DataGrid1.Columns[i].Visible=false;
    这个不行吗?好久没用了,记得在asp.net下好像是可以的!winApp的DataGrid我没用过!
      

  7.   

    larrybest(飞)
    方法是对的!
      

  8.   

    自己定义样式表是比较自由的一种方法。将以前样式clear,再加。
    其实晴海的办法就挺好的。宽度设为0。
    这样可以避免一种情况:就是如果允许重新排序的话,会找不到对应行,只需要把主键列放到里面,宽度设为0,用(类型) key=(类型)dg[dg.CurrentRowIndex,主键所在列];就可以取出对应主键值。当然就可以找到对应行了。
      

  9.   

    如果是web DataGrid就这样用:
    DataGrid1.Columns[i].Visible = false;i为你要隐藏的列的的index,从0开始。
      

  10.   

    回复人: yuehuaqishi(月华骑士) ( ) 信誉:100  2004-01-12 09:58:00  得分:0 
     
      /隐藏某列
    // Hide the column and attach dataset's DefaultView to the datagrid control 
         ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden;   
    这样就ok了
      

  11.   

    可以开始全部显示,然后让用户选择显示那些列,通过for 循环来隐藏for (i=0 ,i<DataGrid.Columns.Count-1,i++)
       {
         if 需要隐藏
          {
          DataGrid1.Columns[i].Visibled=false;
          }
       }
      

  12.   

    设置风格,宽度为0
    datagridtextboxColumn.Width  = 0
      

  13.   

    大家回了這麼多,樓主是要  Hide Row 還是 Hide Column? 樓主說的是 "列" 應該是要 Hide Row 吧?
      

  14.   

    1. 可以通过 ColumnMapping 
     ds.Tables["Employees"].Columns["LastName"].ColumnMapping = MappingType.Hidden; 2.将其,列宽设为:0
      

  15.   

    其实, mappingName 设置成与 ColumnName不相同, 就可以隐藏了.
      

  16.   

    其实, mappingName 设置成与 ColumnName不相同, 就可以隐藏了.
      

  17.   

    你是把DATAGRID帮定到DS上了是吧?所以DATAGRID把数据库中所有的列都显示出来了是吗?但是你只是需要几列,是吧?
    如果是这样,那你就可以先添加几个帮定列,然后把这几列固定到数据库中你要显示的字段上,就可以了。
    添加帮定列在设置属性框中。
      

  18.   


    在ItemDataBound事件中设定
    private void Grid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
    e.Item.Cells[0].Visible=false;   //设定第0列隐藏
    }