DataGridView에서 작업 중이고 DisplayIndex에 따라 열이 올바른 순서로 표시되지 않는 문제가 발생했습니다. 다른 사이트에서 동일한 문제에 대해 언급 한 것을 발견했습니다. http://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/35c1ed09-f4a4-4b3d-bd46-35a11cb8a9bc.스크롤 할 때 DisplayIndex 열이 올바르지 않음
문제는 오른쪽에서 벗어나 그것을보기 위해 스크롤을해야하기 때문에 칼럼이 그리드의 초기 디스플레이에 나타나지 않는 것 같습니다. 열이 충분하지 않아 스크롤없이 모두 볼 수 있으면 순서가 정확합니다. 열을 추가하여 표시하려면 스크롤해야하는 열이있는 경우 오른쪽에있는 열은 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;
}