3

私はこれらのコンポーネントを使用しています:

UniDac for connection to mysql database
DevExpress for QuantumGrid

IDE:

Embarcadero Rad Studio XE2

1 つのレベルを持つ cxGrid コンポーネントと、レベルのビューとして指定された cxGrid1DBTableView があります。データベースからデータを取得し、グリッドで編集できます。バインドされた DataSet にない列を追加したいと考えています。列プロパティの値をCheckBoxとして指定すると、列は表示されますが、クリックしても値をチェックなしからチェック済みに変更できません。フィールドにDataBindingが割り当てられていません。他のタイプのプロパティを試しましたが、すべて同じで、グリッドの行の値を変更できません。

これを修正する方法を数日間探していたので、皆さんが私を助けてくれることを願っています.

4

2 に答える 2

5

背後にデータベース フィールドがないチェックボックス項目を追加しようとしていますか? 私はこれを私のフォームの1つに持っています。

プロパティを「チェックボックス」に設定することに加えて、DataBinding -> ValueType を「ブール値」に設定する必要があります。DataBinding->FieldName は空白のままにすることができます。

値にアクセスしたり、デフォルトを変更したりするには、次のように DataController を使用できます。

View.DataController.Values[i, CheckBoxFieldIndex] := true;

さらに、設定する必要があります

DataController.DataModeController.SmartRefresh := true; 

そのオプションを設定するには、コントローラー用に定義された KeyField (DataController.KeyFieldNames) も必要です。

SmartRefresh を true に設定すると、グリッドは基になるデータセットから更新された値を取得しようとしなくなります。更新を防止する必要があります。そうしないと、バインドされていない列の値が Null に戻されます。これには、データセットの更新方法にいくつかの制限があります。コード内のデータに加えられた変更は、グリッドを明示的に更新しない限り、グリッドに反映されません。

于 2012-12-19T19:33:35.293 に答える
0

また、フィールドView.DataController.KeyFieldNamesにデータセット フィールドの 1 つを入力する必要があります。少なくとも、Delphi 7 では必要です。

于 2015-03-30T13:41:47.710 に答える