2013-06-18 3 views
0

꽤 복잡한 응용 프로그램에서 listviews를 성공적으로 사용했지만 DataGridView를 사용하고 싶습니다. 제대로 작동하지 않습니다. 나는 데이터를 읽기 위해 클래스 나 내 자신의 의사 미들웨어를 사용하고 테이블을 컨트롤에 바인딩하는 것을 피했다. 다음은 올바른 코드가 아닌 간단한 예제입니다.DataGridView에 데이터가 표시되지 않는 이유는 무엇입니까?

Dim ds As New DataSet 
    Dim nrows as Integer 

    ds = dbio.ReadLocations("") 'Reads place names, with an optional search string 
    nrows = ds.Tables(0).Rows.Count 

    'Note: I can insert code here that successfully displays the data in a listview 

    Dim dtStates As DataTable = New DataTable("TableName") 
    Dim drStates As DataRow 'A component row of dtstates 
    Dim dr As DataRow 'A component row of the result set, ds 
    dtStates.Clear() 

    'There are just 3 columns in the data grid 
    dtStates.Columns.Add("ID", GetType(String)) 
    dtStates.Columns.Add("StateName", GetType(String)) 
    dtStates.Columns.Add("Country", GetType(String)) 

    'Build the data table, row-by-row 
    For i = 1 To nRows 
     dr = ds.Tables(0).Rows(i - 1) 'Get a row from the populated data set 

     drStates = dtStates.NewRow  'Create a new row object 
     'Populate the new row object 
     drStates("ID") = dr("ID").ToString  
     drStates("StateName") = dr("StateName") 
     drStates("Country") = dr("Country") 
     'Put the new row object into the data table 
     dtStates.Rows.Add(drStates) 
    Next 

    'Bind the DataGridView to my data table 
    grdStates.DataSource = dtStates 

그리드가 "켜지 며"적절한 행을 가지며 데이터가 없습니다. 내 가장 좋은 추측은 DataGridView에 대해 DataMember를 정의해야하지만 어떤 값을 배치해야하는지 상상할 수 없다는 것입니다. grdStates.DataMember = "TableName"및 다른 값 (심지어 "")을 시도했지만 아무 것도 작동하지 않습니다.

+0

nRows> 0입니까? – matzone

+0

물론입니다. 그것은 68입니다. 그리드에는 68 개의 빈 행이 있습니다. –

답변

0

아직 질문에 주석을 추가 할 수 없기 때문에 여기에서 가정합니다. 즉, DataGridView를 만들고 dtStates에 추가 된 열과 별도로 열을 추가 했으므로 여기서는 가정합니다. 나는 최근에 당신이 가지고있는 것과 같은 문제를 경험했는데, 그것은 당신의 질문에 이르게했습니다. 제 문제는 3 열로 DataGridView를 정의한 다음 이미 3 열의 dataTable에 데이터 소스를 설정했기 때문입니다. 데이터 테이블의 열을 DataGridView에 매핑한다고 생각했습니다. 사실 그것은 데이터 테이블의 각 행에 대한 디자인 인터페이스를 통해 추가 한 세 개의 열만 표시했지만 비어있었습니다.

첫 번째 단서는 행을 선택하고 Ctrl + C를 누른 다음 메모장 ++에서 결과를 붙여 넣은 경우입니다. "첫 번째"열 앞에 네 개의 탭이 보입니다. DataGridView에서 수동 열 정의를 삭제하여 해당 열만 데이터 테이블에 할당했습니다. 이제 데이터가 예상대로 나타납니다.

필자는 원하는 너비로 열 서식을 지정하는 방법을 알아야하지만 적어도 데이터는 지금 있습니다. 희망이 도움이됩니다! 현명한 서핑.

관련 문제