设置 AutoGenerateColumns="False"自己帮定所需的列
<asp:datagrid id="DataGrid1" runat="server" Width="100%" AutoGenerateColumns="False">
<Columns> <asp:BoundColumn DataField="" HeaderText="" ></asp:BoundColumn> </Columns>
</asp:datagrid>

解决方案 »

  1.   

    public static void dgColumnStyle_Table()
    {
    //声明DataGridTableStyle
    DataGridTableStyle myTableStyle = new DataGridTableStyle( );
    myTableStyle.MappingName = "SS_TABLE";//表名 //声明DataGridColumnStyle1
    DataGridTextBoxColumn ColumnStyle1 = new DataGridTextBoxColumn();
    ColumnStyle1.MappingName = "T_ID";//列名
    ColumnStyle1.HeaderText = "编号";//列显示名
    ColumnStyle1.Width = 40; //声明DataGridColumnStyle2
    DataGridTextBoxColumn ColumnStyle2 = new DataGridTextBoxColumn();
    ColumnStyle2.MappingName = "T_ENAME";
    ColumnStyle2.HeaderText = "表名";
    ColumnStyle2.Width = 120; //声明DataGridColumnStyle3
    DataGridTextBoxColumn ColumnStyle3 = new DataGridTextBoxColumn();
    ColumnStyle3.MappingName = "T_CNAME";
    ColumnStyle3.HeaderText = "中文名";
    ColumnStyle3.Width = 250; //声明DataGridColumnStyle4
    DataGridTextBoxColumn ColumnStyle4 = new DataGridTextBoxColumn();
    ColumnStyle4.MappingName = "T_DESC";
    ColumnStyle4.HeaderText = "描述";
    ColumnStyle4.Width = 374; //添加列格式和表格式
    myTableStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[] {ColumnStyle1,ColumnStyle2,ColumnStyle3,ColumnStyle4});
    dataGridMain.TableStyles.Clear();
    dataGridMain.TableStyles.Add( myTableStyle );
    }
    象这样的给DataGrid定义了列样式后,没定义过的也就是“ColumnStyle1.MappingName = "T_ID";//列名”这部分没有MappingName过的就不会显示出来了,MappingName错了的也不会显示
      

  2.   

    ds.Tables["Employees"].Columns["ColumnsName"].ColumnMapping = MappingType.Hidden;
      

  3.   

    看看行不行]可以加在类构造函数里面或者是load事件里面
      

  4.   

    给分说明:
    upingking: webform , 我要的是winform , 10分
    boyxia(无天刀绝): 我和你做的方法差不多,怎么不行?可能是我的出了怪... 写了这么长一段,给5分
    skydaxia(): 这种方法是有效的,35分
    jesseNo1(思源): 你说写好sql, 这当然对. 可是有些列的值可能比较复杂,放在其他的config控件中可能更方便些,但我又不希望在一个form中重复出现,你的答案与解决问题好像无关,不好意思了