2017-05-28 6 views
0

devExpressのグリッドを使ってデータベースからデータを表示しています。私は列の値をドロップダウンとして表示する必要があったため、RepositoryItemLookUpここのコードです:ここで他の列の値を変更するにはどうすればいいですか(vb dev express)

`Dim riLookup As New RepositoryItemLookUpEdit() 

riLookup.NullText = String.Empty 

DataTableDobTableAdapter.FillDob(Me.DsOrders.DataTableDob) 

riLookup.DataSource = Me.DsOrders.DataTableDob 

riLookup.ValueMember = "ID" 
riLookup.DisplayMember = "TITLE" 
riLookup.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup 

GridView1.Columns("Code").ColumnEdit = riLookup` 

は、私が何を言っているかというの写真です:enter image description here

私が選びだしているものは何でも、私は値を変更する可能性がある場合、私はとてもこのrepositoryitemlookupeditを扱うことができますどのように思ったんだけどある画像で強調表示されている別の列のNからDへ

多分私の体裁 - >フォーマット条件セクションに条件を書くことができます。

このrepositoryitemlookupeditから何かが選択された場合、別の列の値を変更する必要がありますが、私はv.bのどちらもdevexpressの前に使ったことがないので、本当に苦労しています。

ありがとうございました 乾杯! ALEXのHELP AFTER

enter image description here

は私がe.NewValueが何であるかを確認するためにそこにブレークポイントを入れて、私はID 1000097があり、ときに私はキャッチhitted breakpoing MCIを選びましたので、私は、それがacctuallyデータベースからIDで見ましたその末尾に「D」というサフィックスが付いているのですが、それはなぜですか?

+0

あなたが可能性:neccessaryである私は、しかし、あなたのコード内で検索couldn'tことの一つは、リポジトリ項目を正しく動作させるためにのようなあなたのGridView RepositoryItemsコレクションに追加することです[RepositoryItemLookupEdit.EditValueChanging](https://documentation.devexpress.com/#WindowsForms/DevExpressXtraEditorsRepositoryRepositoryItem_EditValueChangingtopic)イベントを処理し、そこの他の列の値を設定します。 –

+0

@AlexB。あなたはそれがどのように見えるかの簡単な例を提供してください、私はイベントハンドラを書くことを試みましたが、不幸にも私はできませんでした。 –

+0

'N'または' D'の列がバインドされているか、バインドされていませんか? –

答えて

1

RepositoryItemLookupEdit.EditValueChangingイベントを処理できます。

ちょうどあなたの既存のコードにイベントハンドラを追加します。

Dim riLookup As New RepositoryItemLookUpEdit() 

    riLookup.NullText = String.Empty 

    DataTableDobTableAdapter.FillDob(Me.DsOrders.DataTableDob) 

    riLookup.DataSource = Me.DsOrders.DataTableDob 

    riLookup.ValueMember = "ID" 
    riLookup.DisplayMember = "TITLE" 
    riLookup.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup 

    GridView1.Columns("Code").ColumnEdit = riLookup 
    'Add this line: 
    AddHandler riLookup.EditValueChanging, AddressOf repItem_EditValueChanging 

は今だけイベントを処理し、「N/D」欄を設定するために、あなたのロジックを実行します。

Private Sub repItem_EditValueChanging(sender As Object, e As ChangingEventArgs) 
     If e.NewValue > -1 Then 'any ID given => "N" 
      GridView1.SetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns(6), "D") 
     Else 
      GridView1.SetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns(6), "N") 
     End If 
    End Sub 

(私は仮定スクリーンショットの第6欄)。

PS:

GridControl1.RepositoryItems.Add(riLookup)

+0

何かがRepositoryItemLookup/dropdownから選択されている場合、 "N"から "D"に値を変更する必要があるので、何とかドロップダウンから選択されたものがあればチェックできます。 e.NewValue = 1の代わりに使用できる条件はどれですか?そしてあなたの助けに感謝 –

+0

e.NewValue> 0なら試しましたか? –

+0

編集メイトをチェックする(私はなぜそのsufix "D"があるのか​​わからない)、すべての単一のe.NewValueのために、ID番号+ Dが最後にある。私は本当になぜそれが分からないのだろうか?そしてもう一度、これは解決策に見える多くの時間ありがとう! –

関連する問題