2016-08-23 35 views
1

注文システムでは注文画面に注文を入力できます。これを行うには、UltraGridを使用します。各行はOrderです。下の画像を参照してください。Infragistics UltraGrid - 個々のセルを無効にします

enter image description here

Iは、細胞内のデータを編集することができず、データが空のセルに入力することができないように何とか、行全体を非overrideableすることが可能である、ことを知っています。

しかし、このセルにデータがあるまでは、1つを除いて、すべてのセルがこのように動作する必要があります。 (例:「商品コード」を除くすべてのセルを無効にしてから、商品コードを入力して編集可能にする必要があります)。これを行うために必要なコードは何ですか?

私はWithステートメントを使ってセルを個別にReadOnlyに設定しようとしましたが、これは機能していないようです。私は個々の列が無効に活性化するために以下のコードを使用しているが、私は、オブジェクト

のインスタンスに設定されていないエラーメッセージ

オブジェクト参照を取得

EDIT

誰でも私にその理由を教えてもらえますか?

 If ugProducts.ActiveRow.Cells("Product_Code").Value <> "" Then 
      ugProducts.DisplayLayout.Bands(0).Columns(1).CellActivation = Activation.Disabled 
      ugProducts.DisplayLayout.Bands(0).Columns(2).CellActivation = Activation.Disabled 
      ugProducts.DisplayLayout.Bands(0).Columns(3).CellActivation = Activation.Disabled 
     Else 
     End If 

ありがとうございます。

+0

まず最初は、' <> '' = 'への変更です。 '.Value'の最後に' .ToString'を追加するとどうなりますか? – David

+0

@Davidありがとう、これは同じエラーを返しますが、少なくとも割り当ては正しいです –

答えて

0

アプローチは正しいです:CellActivationは、設定するのに適切な小道具です。

しかし、私は問題はあなたが設定した場合だと思います;)

あなたはWHENについて話すいけません。 セルが一度セットされたければ、右の「瞬間」はInitializeLayout eventのUGridです。

InitializeLayoutEventArgsには.Layoutがあり、これを使用してband-column.CellActivationを設定します。

特定の行の特定のセルを制御する場合は、InitializeRow eventでこれを処理し、eventargの行にあるセルのアクティブ化を設定する必要があります。

ユーザーがセル値を編集するときにアクティブ化を制御する必要がある場合は、AfterExitEditModeイベントでそれを処理します。

PS:個人的な提案、VBではなくC#を使用してください。よりクリアで柔軟性がありコンパクトです。 Product_Code` `の値が空でない場合、これは現在無効にそれらを設定しているとして、あなたがすべき

ダヴィデ

+0

これは既にここで答えられましたが、とにかくありがとう http://stackoverflow.com/a/39105251/6634034 –

関連する問題