2011-06-29 1 views
1

新しい行を挿入するためにInitNewRowイベントを使用してASPXComboBoxを作成しようとしていますが、データをASPXComboBoxにバインドする際に問題があります。InitNewRowでコンボボックスを初期化する方法

行の編集にCellEditorInitializeイベントを使用しましたが、正常に動作しますが、InitNewRowイベントの同じプリンシパルが「オブジェクトのインスタンスに設定されていません」という例外が発生します。ただし、呼び出されるビジネスロジック関数は、完全に実装されたDataTableを返します。

誰でもこの助けてください。

+0

グリッドのマークアップとサーバーサイドイベントハンドラを指定してください。 – Mikhail

+0

InitNewRowイベントハンドラにコードを投稿して、エディタの値を設定するだけか、エディタのDataSourceも割り当てるかどうかを説明してください。 –

+0

私はInitNewRowイベントにコードを配置し、e.NewValuesを順序付き辞書にバインドしようとしました。しかし、私はコンボボックスが自動的にバインドされることを理解していました。私はコンボボックスのデータソースを設定したい – tony

答えて

0

コンボボックスのデータソースを設定する場合は、この目的でCellEditorInitializeイベントを使用します。新しい行の挿入モードでグリッドが動作するかどうかを判断する必要がある場合は、ASPxGridViewのIsNewRowEditingプロパティを使用します。私。コードは次のようなものにする必要があります。

protected void ASPxGridView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e) { 
     ASPxGridView grid = sender as ASPxGridView; 
     if(e.Column.FieldName == "SomeFieldName" && grid.IsNewRowEditing) { 
      ASPxComboBox combo = e.Editor as ASPxComboBox; 
      combo.DataSource = DataTable; 
      combo.DataBindItems(); 
     } 
    } 

このアプローチはあなたにとって効果的ですか?

+0

はい新しいものを作成する。この正確なプリンシパルが必要ですが、新しいコマンドボタンをクリックすると、ユーザーがグリッドビューに新しい行を追加したいときに、完全に入力されたコンボボックスが表示されます。 – tony

+0

OK、この方法が有効です。上記のコードのDataTable変数は、エディタに必要なデータを提供する必要があります。 –

+0

こんにちは - ありがとうございます。すべてが今働いています。 :) – tony

関連する問題