2017-04-08 33 views
0

私はdatagridviewを持っていて、コンストラクタでデータテーブルの値としてDataGridの値をバインドしています。DataGridViewの列の順序が正しく動作しません

実行時に列の順序を変更しています。私が隠しているいくつかの列と、私が並べ替えたいくつかの列。 (列は動的ですが、ときどき10列、時には20列あります)

列を非表示にします。それは問題ありません。しかし、並べ替えられた列は正しい順序ではありません。

ここに何か不足していますか?すべてのヘルプは本当にいただければ幸いです

Public Class() 
    { 
     myGrid.DataSource = gridDataTable; 
    } 


    List<int> columnsOrder;   //Order index values 
    List<string> columnNameFromExcel; // Hiding column strings 

    private void VisibleColumns() 
    { 
     for (int i = 0; i < myGrid.ColumnCount; i++) 
     { 
      //Hiding columns based on some logics 
      if(!columnNameFromExcel.Values.Contains(myGrid.Columns[i].DataPropertyName)) 
      { 
       myGrid.Columns[i].Visible = false; 
      } 

      //Changing the display index    

      myGrid.Columns[i].DisplayIndex = columnsOrder[i]; 
     } 
    } 

は、ここに私のコードです。

Actual Result: 
Column3 Column4 Column5 Column1 Column2 

Expected Result: 
Column1 Column2 Column3 Column4 Column5 

注: 私は混乱を避けるために、私の質問を編集しました。表示インデックスの割り当ては問題ありません。私は実行時にそれをチェックした。重複はありません。しかし、依然として、実行後に一部の列の順序が正しく配置されませんでした。

+0

を使用して列の順序を作るために、以下を使用できますか?リスト内の要素0は列0の表示インデックス、要素1は列1の表示インデックス...などです。単純に 'MyGrid.Columns [i] .DisplayIndex = columnsOrder [i];' ...を設定するのではないでしょうか? – JohnG

+0

もう一度、両方のリストに含まれるものが正確には不明です。 'columnsOrder'リストにすべての列が含まれていなければならないと推測しなければなりません。そうでないと、intがどの列を参照しているかを知ることができますか?一方の目に見える列は、目に見えないようにする列のみのリストにすることができます。 – JohnG

+0

私は混乱を避けるために私の質問を編集しました。表示インデックスの割り当ては問題ありません。私は実行時にそれをチェックした。重複はありません。しかし、依然として、いくつかの列は、実行後に正しく配置されていないので、順序は正しくありません。 –

答えて

0

あなたは `いくつかのcondition`であり、どのような` columnsOrder`に何が含まれているか不明であるDisplayIndex、

private void makeColumnOrder() 
{ 
    customersDataGridView.Columns["Column1"].DisplayIndex = 0; 
    customersDataGridView.Columns["Column2"].DisplayIndex = 1; 
    customersDataGridView.Columns["Column3"].DisplayIndex = 2; 
} 
+0

これはループで実行されます。また、値は動的です。静的な値を割り当てることはできません。私は私の質問を更新しました。どうぞご覧ください –

+0

thoghの値が動的であっても、列は同じになります。 – Sajeetharan

+0

列自体は動的です。時々私は10を持ち、時には20を持っていることがあります。実行時に列を並べ替える必要があります –

関連する問題