2013-08-13 3 views
1

나는 내 눈에서 꽤 똑바로 보이는 것 위에 내 머리카락을 잡아 당기는 것 같습니다. 데이터 집합을 변경 한 후 datagridview 컨트롤을 올바르게 업데이트 할 수 없습니다.Datagridview를 데이터 세트에서 새로 고침

데이터 세트에서 처음으로 datagridview를 채우고 열을 자동으로 생성합니다. 그러나 새 데이터로 데이터 집합을 다시 생성하면 datagridview는 새 데이터를 올바르게 표시하지만 이전 열 머리글은 제거하지 않습니다.

예를 들어 Store Name과 Manager를 제공하고 자동으로 DataGridview를 채우는 쿼리가 있습니다. 그런 다음 저장소 이름과 관리자에게 내 쿼리 만 변경하면 저장소 이름, 관리자 (빈 열 포함) 및 관리자가 표시됩니다.

나는 datagridview.refresh() 및 datagridview.update()를 시도했지만 아무것도 작동하지 않는 것 같습니다. 내가있는 DataGridView를 업데이트 할 때

MySQLConn.Open() 

    Dim ExQry As New MySqlCommand(QryStr, MySQLConn) 
    ExQry.CommandType = CommandType.Text 
    Dim da As New MySqlDataAdapter(ExQry) 
    dasCustomQryData.Clear() 'my dataset is called dasCustomQryData 

    da.Fill(dasCustomQryData, "QryData") 
    da.Update(dasCustomQryData, "QryData") 

    With dgvCustomQuery 
     .DataSource = Nothing 
     .Dock = DockStyle.Fill 
     .AutoGenerateColumns = True 
     .DataSource = dasCustomQryData 
     .DataMember = "QryData" 
     .Refresh() 
     .Visible = True 
    End With 

    MySQLConn.Close() 
    da.Dispose() 
    dasCustomQryData.Dispose() 

그래서, 나는 위의 코드에 새로운 QryStr 플러그인과 내 데이터 집합을 재 구축 : 다음은 내 코드입니다. datagridview에 올바른 데이터가 포함되어 있기 때문에 데이터 세트가 업데이트되고 있지만 내 문제는 datagridview가 더 이상 채워지지 않은 이전 열을 지우지 않는다는 것입니다.

모두에게 감사드립니다. 감사합니다

+0

그냥 열의 데이터는이 데이터 테이블에 존재하는 컬럼을 게재가 중단됩니다 의미하지 않습니다이 발생할 :

다음 명령

내 문제를 해결했다. – OneFineDay

+0

그럼 내 데이터 집합에 어떤 데이터가 있는지 확인하려면 어떻게해야합니까? 내 쿼리는 관리자 필드에 대한 참조를 만들지 않으며 새 쿼리로 다시 채우는 동안 데이터 세트를 지우므로 필드가 내 데이터 세트에 여전히 존재하는지 어떻게 확인할 수 있습니까? – Riples

+0

반환 된 모든 레코드를 반복 할 수 있으며 빈 필드 수가'rows.Count'와 일치하면 해당 열을 보이지 않게 할 수 있습니다. – OneFineDay

답변

1

좋아, 문제 해결 및 코드 놀고 후, 나는 이것에 대한 간단한 해결책은 데이터 테이블 자체가 열 머리글을 공개 아니었다는 것을 알게되었습니다. 따라서 datagridview와 데이터 세트가 지워지더라도 데이터 테이블은 채워집니다.

dt.Columns.Clear() 
1

VB에서 바로 연결 및 데이터 집합을 만들고 데이터 집합에 테이블을 표시하는 것이 좋습니다. 테이블의 맨 아래에 표준 쿼리가 있지만 변수를 매개 변수로 사용하여 자신을 만들 수 있습니다. 테이블 어댑터를 통해 쿼리를 호출하고이를 datagridview에 직접 할당 할 수 있습니다.
항상 내 프로그램에서 작동하는 것처럼 보입니다. 어떤 종류의 데이터베이스를 사용하고 있습니까? 분명하지만 datagridview가 바운드되지 않았는지 확인하는 것이 좋습니다.
내 프로젝트 중 하나의 샘플
dgData.DataSource = TblEventsTableAdapter.ViewEvent(cmbEvents.SelectedItem.ToString)
여기서 dgdata는 분명히 datagridview입니다. ViewEvent는 데이터 집합에서 생성 된 커스텀 쿼리이며 1 인수를 취합니다. 희망이 당신에게 유용합니다

+0

감사합니다. Manny - MySQL 데이터베이스를 사용하고 있습니다. 내 소프트웨어를 통해 내 연결 문자열을 구축하고 데이터베이스간에 변경하고 자주 변경하므로 VB에서 연결을 직접 연결하고 싶지 않은 이유입니다. – Riples

관련 문제