1

私は DataGridView を使用していますが、DisplayIndex に従って列が正しい順序で表示されないことがあるという問題に遭遇しました。別のサイトhttp://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/35c1ed09-f4a4-4b3d-bd46-35a11cb8a9bcで同じ問題についての言及を見つけました。

問題は、グリッドの最初の表示に列が表示されない場合にあるようです。これは、右にずれているため、スクロールして表示する必要があるためです。スクロールせずにすべての列が表示されるほど列が少ない場合、順序は正しいです。列の 1 つを表示するためにスクロールが必要になるように列が追加された場合、右側の列は DisplayIndex によると最後の列ではなく、以前に表示されるはずだった列になります。

上記のリンクの提案と同様に機能するようにウィンドウのロジックを変更することはできますが、基本的な問題が見過ごされて回避策が必要になるのは好きではありません。回避策ではなく、問題自体に対処する方法でこの問題に対処する方法について、他の誰かに何か提案はありますか?

これは、現在注文を行っている方法のコードスニペットです。

// Fill the data grid view with data from the database.
dataGridView1.DataSource = null;
DataTable dt = // Logic to get data from DB here
dataGridView1.DataSource = dt;

// Get the column display data.  This can change per user.
DataTable columnDisplay = // Logic to get data from DB here

bool foundMatch;

foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    foundMatch = false;
    foreach (DataRow row in columnDisplay.Rows)
    {
        if (row["column_name"].ToString().Equals(column.Name, StringComparison.CurrentCultureIgnoreCase))
        {
            foundMatch = true;
            if (row["show_in_window"].ToString().Equals("y"))
            {
                // Set the column placement and display name.
                dataGridView1.Columns[column.Name].DisplayIndex = Convert.ToInt32(row["column_sequence"].ToString());
                dataGridView1.Columns[column.Name].HeaderText = row["display_name"].ToString();
                dataGridView1.Columns[column.Name].Width = 105;
            }
            else
            {
                // Hide the column.
                dataGridView1.Columns[column.Name].Visible = false;
            }
            break;
        }
    }

    // If the column is not in the display table, then it should not be displayed at all.
    if (!foundMatch)
        column.Visible = false;
}
4

1 に答える 1

0

わかりました。誰も応答していないので、最新情報を提供します。この問題を解決するのに時間がかかりませんでした。優先度が非常に低いと見なされているため、仮にあったとしても数か月は到達できない可能性があります。

元の投稿以降に見つけた興味深い情報の 1 つは、列の表示インデックス番号を変更すると、それを考慮して残りの列が自動的に変更されるということです。msdn のドキュメントを読んだとき、それは私には明らかではなかったので、これに出くわした他の誰かにとって役立つかもしれません。

于 2012-10-22T20:52:10.027 に答える