1)这个列不是数据库的一个字段,只是用来表示当前行是否选中  
2)这个checkbox可以编辑,可以选中和不选中之前切换  
另一列是一列数据
这两列都不是数据库的字段
怎么样让他们可编辑???

解决方案 »

  1.   

    你这种情况应该是虚拟字段的问题,可以将数据转为XML之后,就可以编辑了!function DataSetToXMLData(fData: TClientDataSet): String;
    var
      Str:string;
      i:Integer;
      rData:TClientDataSet;
    begin
      rData:=TClientDataSet.Create(nil);
      try
        Str:= fData.XMLData;
        Str:=StringReplace(Str,'fieldtype="i4"','fieldtype="fixed" WIDTH="18"',[rfReplaceAll]);
        Str:=StringReplace(Str,'SUBTYPE="Autoinc"',' ',[rfReplaceAll]);
        Str:=StringReplace(Str,'readonly="true"',' ',[rfReplaceAll]);
        Str:=StringReplace(Str,'DECIMALS="2" WIDTH="7"/>','DECIMALS="2" WIDTH="18"/>',[rfReplaceAll]);    rData.XMLData:=Str;
        with rData do   //把所有数据的空格去掉
        begin
          First;
          while not eof do
          begin
            for i:=0 to FieldCount-1 do
            begin
              Edit;
              Fields[i].AsString:= Trim(Fields[i].AsString);
              Post;
            end;
            Next;
          end;
        end;
        rData.MergeChangeLog;
        Result := rData.XMLData;
      finally
        rData.Free;
      end;
    end;