很简单的啊!你在绑定的时候不是有个DataTable嘛!你把它的DeauftView.AllowNew=False;就可以了
如果你想要的话.就再设置成True啊!

解决方案 »

  1.   

    private void AddNew()
    {
       DataTable myTable = new DataTable();
       // Not shown: code to populate DataTable.
       DataView dv = new DataView(myTable);
       dv.AllowNew = true;
       DataRowView drv = dv.AddNew();
       drv["ProductName"] = "New Product Name";
    如果可添加新行,则为 true;否则为 false。
    把AllowNew设置你的要求!!!
      

  2.   

    DataView.AllowNew = false;
    DataView.AllowDelete = false;
    DataView.AllowEdit = false;
    点击按钮新增:
    新行从DataView对应的DataTable添加.
    修改可以打开一个新的窗口进行编辑.
      

  3.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
      

  4.   

    但是我要新增很多行,如果我按了“新增”按钮,那AllowNew就变为true了,那就又发生上面说的情况了,怎么控制呢?
      

  5.   

    将DATAGRID设为只读就可以啦,新增时,建议不要在DATAGRID中编辑
      

  6.   

    设置DataTable1.DeauftView.AllowNew=False;就可以不会点击到最下面一行就新增一行了。
    至于通过按钮新增多行,可以增加DataTable 的多个DataRow来实现
      

  7.   

    1 初始化时,设置DataTable1.DeauftView.AllowNew=False;
      生成一个button用来控制新增加一行;2 当button被点击之后,就给被绑定到 DataGrid 的DataTable1
      增加一行;在button事件的处理程序的最后,再写上:
      设置DataTable1.DeauftView.AllowNew=False;
      

  8.   

    代码
    private void Test2_Load(object sender, System.EventArgs e)
    {
    oleDbDataAdapter1.Fill(dataSet1,"authors");
    dataView1.Table= dataSet1.Tables["authors"];
    dataGrid1.SetDataBinding(dataView1,null);
    dataView1.AllowNew=false;}
    private void newRow(int MaxRow)
    {
    BindingManagerBase bmb =  this.BindingContext[dataView1];
    dataView1.AllowNew=true;
    try
    {
    while(MaxRow > 0)
    {
    bmb.AddNew();
    MaxRow--;
    }
    }
    catch(Exception ex)
    {
    throw ex;
    }
    finally
    {
    dataView1.AllowNew=false;
    }

    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    newRow(5);

    }
      

  9.   

    我也想请问,如果我有2个dataGrid,且建立了关系,如何避免楼主的问题,1个dataGrid,我已试过。没什么问题,但是2个有关系的dataGrid总是不行,我的方法如下:
    ds.Tables.Add(TableDB);
    ds.Tables.Add(TableTab); iMasterCnt = ds.Tables["数据库"].Rows.Count;
    iDetailCnt = ds.Tables["数据表"].Rows.Count;   ds.Tables["数据库"].DefaultView.AllowNew = false;
    dgData.DataSource = ds.Tables["数据库"].DefaultView;
    ds.Tables["数据表"].DefaultView.AllowNew = false;
    dgTab.DataSource = ds.Tables["数据表"].DefaultView; DataRelation myDataRelation;
    myDataRelation = new DataRelation("数据初始化列表", ds.Tables["数据库"].Columns["名称"], ds.Tables["数据表"].Columns["数据库"]);
    myDataRelation.ChildTable.DefaultView.AllowNew = false;
    ds.Relations.Add(myDataRelation); dgData.SetDataBinding(ds,"数据库"); dgTab.SetDataBinding(ds,"数据库.数据初始化列表");
    这样不奏效,望思归等高人指点
      

  10.   

    re:但是我要新增很多行,如果我按了“新增”按钮,那AllowNew就变为true了,那就又发生上面说的情况了,怎么控制呢?update后设置AllowNew=false即可
      

  11.   

    .AllowNew=false
    然后按新增的时候在数据源新增一行不就可以了吗?
      

  12.   

    回复人: aijing(我也可以的!) ( ) 信誉:100  2005-1-31 11:53:04  得分: 0  re:但是我要新增很多行,如果我按了“新增”按钮,那AllowNew就变为true了,那就又发生上面说的情况了,怎么控制呢?update后设置AllowNew=false即可  
     同意aijing的说法,首先 dataGrid1.ReadOnly = false;
     在新增按钮的事件里写上dataGrid1.ReadOnly=!(dataGrid1.ReadOnly);
     在添加新的一行并保存到数据库后的代码后面再加上dataGrid1.ReadOnly=!(dataGrid1.ReadOnly);
    基本上就可以啦~~你试试吧!!!
      

  13.   

    在winForm里,用鼠标范围来控制也可以呀
      

  14.   

    我是新增很多行之后才保存的,如果allowNew 为true又发生以上的问题了
      

  15.   

    笨变通一下,新增的时候dataview.allownew=true
    dataview.addnew//多行就多次addnew
    dataview.allownew=false不就可以了??