DataView dv=(DataView)dgSelect.DataSource;
dv.AllowNew=true;
DataRow dr=dv.Table.NewRow();
dr["Id"]=Common.GetGUID();
dr["StudentName"]=comStudent.SelectedValue.ToString();
dr["CourseName"]=comCourse.SelectedValue.ToString();
dv.Table.Rows.InsertAt(dr,0);
dv.AddNew();//添加行
dv.Table.Columns.Remove("StudentName");//隐藏
dgSelect.DataSource=dv;

解决方案 »

  1.   

    以编程方式向 DataGrid 添加表和列警告 当以编程方式指定列样式时,在向 GridTableStylesCollection 对象添加 DataGridTableStyle 对象之前,请务必先创建 DataGridColumnStyle 对象并将其添加到 GridColumnStylesCollection 对象中。当将空的 DataGridTableStyle 对象添加到集合时,会自动生成 DataGridColumnStyle 对象。因此,如果试图向 GridColumnStylesCollection 对象添加具有重复的 MappingName 值的新 DataGridColumnStyle 对象,则会引发异常。
    为在表中显示数据,必须首先将 DataGrid 控件绑定到数据集。有关更多信息,请参阅将 Windows 窗体 DataGrid 控件绑定到数据源。 
    声明新的表样式并设置其映射名称。 
    'Visual Basic
    Dim ts1 as New DataGridTableStyle()
    ts1.MappingName = "Customers"// C#
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.MappingName = "Customers";
    声明新的列样式并设置其映射名称及其他属性。 
    'Visual Basic
    Dim myDataCol As New DataGridBoolColumn()
    myDataCol.HeaderText = "My New Column"
    myDataCol.MappingName = "Current"// C#
    DataGridBoolColumn myDataCol = new DataGridBoolColumn();
    myDataCol.HeaderText = "My New Column";
    myDataCol.MappingName = "Current";
    调用 GridColumnStylesCollection 对象的 Add 方法以将该列添加到表样式中 
    'Visual Basic
    ts1.GridColumnStyles.Add(myDataCol)// C#
    ts1.GridColumnStyles.Add(myDataCol);
    调用 GridTableStylesCollection 对象的 Add 方法以将表样式添加到数据网格中。 
    'Visual Basic
    DataGrid1.TableStyles.Add(ts1)// C#
    dataGrid1.TableStyles.Add(ts1);