就是DATAGRID中的某一列是CHECKBOX....要让这列可操作,
并且,不允许在表中继续追加新的1行
(点下面空白的部分不是自动多个全为空的新的一行吗,这个功能不允许的)要两全齐美怎么半?

解决方案 »

  1.   

    很简单,这个问题.
    private void dataGrid1_Click(object sender, System.EventArgs e)
    {
    int index=this.dataGrid1.CurrentCell.RowNumber;
    if(index>-1)
    {
      if(this.dataGrid1.CurrentCell.ColumnNumber==3)
       {
        this.dataset11.卖.Rows[index]["卖"]=!((bool)this.dataset11.卖.Rows[index]["卖"]);
        this.dataset11.卖.AcceptChanges();
        this.dataGrid1.DataSource=this.dataset11.卖;
       }
    }
    }
    这个是我做的"重排ULL"工具里的一节代码.就是在设DATAGRID为READONLY=TRUE时.点击CHECKBOX一样有反映的代码.绝对是你要的效果
     this.dataset11.卖是DATASET中的一个表,这个DATAGRID的数据源原程序可以到http://www.ruichen.net/dispbbs.asp?boardID=15&ID=5126&page=1这个帖子里去下载(要注册)一个看看效果.压缩包里我放了一个ULL文件给你试用的
      

  2.   

    this.dataGrid1.CurrentCell.ColumnNumber==3 //是因为卖不卖这个BOOL字段是在DATATABLE的第4个字段
      

  3.   

    这样作还有个问题!!int index=this.dataGrid1.CurrentCell.RowNumber;
    if(index>-1)
    {
    ...
    ...如果没有数据...点在空的地方 得到的 CurrentCell.RowNumber 是 0
    如果有数据....点在空的地方  得到的是上次那行的 CurrentCell.RowNumber所以有数据还不会报错...没数据付值的时候就报错拉
      

  4.   

    还是没有看大懂你说的意思,
    那可不可以不让DataGrid显示底部的空行呢?
    假定你的DataGrid 是dataGrid1
    CurrencyManager cm = (CurrencyManager)this.BindingContext[dataGrid1.DataSource, dataGrid1.DataMember];
       ((DataView)cm.List).AllowNew = false;
      

  5.   

    to  icephoenix57() 1.你一定只是测试了取当前列值.你并没有综合应用.
    你没看到if(this.dataGrid1.CurrentCell.ColumnNumber==3)吗.你点空白的地方就是白点.什么都不会做的2.很难想得出一个BOOL你让它为NULL做什么.
      

  6.   

    自己加个判断.是NULL就设为TRUE,不是NULL就把值设成相反的.这么简单的问题也要搞这么久..................不要死搬.一切要灵活
      

  7.   

    ((System.Data.DataTable )DataGrid1.DataSource).DefaultView.AllowNew =false;
    ((System.Data.DataTable )DataGrid1.DataSource).DefaultView.AllowEdit =true;
      

  8.   

    darkm00n(黑月)的方法简单有效,我刚试过,正确,楼主为什么还不结帖啊.