私は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の表示インデックス、要素1は列1の表示インデックス...などです。単純に 'MyGrid.Columns [i] .DisplayIndex = columnsOrder [i];' ...を設定するのではないでしょうか? – JohnG
もう一度、両方のリストに含まれるものが正確には不明です。 'columnsOrder'リストにすべての列が含まれていなければならないと推測しなければなりません。そうでないと、intがどの列を参照しているかを知ることができますか?一方の目に見える列は、目に見えないようにする列のみのリストにすることができます。 – JohnG
私は混乱を避けるために私の質問を編集しました。表示インデックスの割り当ては問題ありません。私は実行時にそれをチェックした。重複はありません。しかし、依然として、いくつかの列は、実行後に正しく配置されていないので、順序は正しくありません。 –