2012-10-15 3 views
1

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; 
} 

답변

0

가, 내가 업데이 트를 좋아주지 -이 문제를 해결하기 위해 나는 시간이 걸릴하지 않았다을 발행물. 그것은 충분히 낮은 우선 순위로 간주됩니다.

원본 게시물 이후에 발견 한 재미있는 정보 중 하나는 열에 대한 표시 인덱스 번호를 수정할 때 나머지 열이 자동으로 변경되어 계정에 반영된다는 것입니다. 그것은 msdn 문서를 읽을 때 분명하지 않았으므로 아마도이 문제를 겪고있는 다른 사람들에게 도움이 될 것입니다.

관련 문제