6

私は Winforms DevExpress を使用しており、正常に動作している DataGridView に DataTable をバインドしています。私が抱えている問題は、DataGridView にバインドされている元の DataTable を置き換える必要がある元のオブジェクトとは別の新しい DataTable オブジェクトを作成する関数がいくつかあることです。

DataTable originalTable = new DataTable("OriginalTable");

//Populate originalTable 

myDataGridControl.DataSource = originalTable;

上記のコードではすべて正常に動作しますが、次のコードは新しい DataTable を作成し、myDataGridControl の DataSource として設定する必要があります。

DataTable newTable = new DataTable("NewTable");

//Populate newTable

//Set newTable as the DataSource for myDataGridControl
myDataGridControl.DataSource = newTable;

RefreshDataSource()、Refresh() を呼び出し、DataSource を null に設定するなど、この作業を行うためにいくつかの異なる試みを試みました。私はまだそれを機能させていません。どうすればいいですか?

4

4 に答える 4

9

BindingSource次のようにを使用してみてください。

DataTable sourceTable = new DataTable("OriginalTable");
BindingSource source = new BindingSource();
source.DataSource = sourceTable;
myDataGridControl.Datasource = source;

再バインドするsourceTable場合は、次のように変数を更新します。

sourceTable = new DataTable("NewTable");

// If the structure of `OriginalTable` and `NewTable` are the same, then do this:
source.ResetBindings(false);

// If the structure of `OriginalTable` and `NewTable` are different, then do this:
source.ResetBindinds(true);

注:の詳細については、BindingSource.ResetBindings メソッドResetBindings()を参照してください。

于 2013-08-28T02:53:37.227 に答える
5

次の組み合わせを試しましたか?:

myDataGridControl.DataSource = originalTable;
myDataGridControl.DataSource = null;
myDataGridControl.DataSource = newTable;

私の経験では、DataSourceto nullthen を 2 番目のソースに設定するとうまくいきます。

于 2013-08-28T02:52:29.747 に答える
1

他の提案を試した後でも誰かが問題を抱えている場合は、GridControl.MainView プロパティで PopulateColumns() を次のように呼び出すと、問題が解決しました。

例えば:

myDataGridControl.MainView.PopulateColumns();

こちらもDevExpressで以下の記事から参照できます。http://www.devexpress.com/Support/Center/Question/Details/Q362978

于 2013-08-29T03:06:35.100 に答える
0

少し古いトピックですが、私を悩ませたので、私の経験を共有することにしました...ソースのバインドが機能せず、Datagridview には「MainView」変数がありません。

私の場合、並べ替えコマンドを実行した後に問題が発生すると思われます。

MyDataTable.DefaultView.Sort = "Column Asc";
MyDataTable = MyDataTable.DefaultView.ToTable();

私の解決策は、アクションが実行された後に再度バインドすることでした:

myDataGrid.DataSource = MyDataTable;
于 2016-02-10T15:39:11.583 に答える