2009-03-23 9 views

답변

3

DataGrid에는 명시적인 제한이 없습니다.

그러나 정수로 행 수를 계산하는 경향이있는 내부 데이터 구조 모두에 의해 제약을받습니다. 이것은 하드 한계가 Integer.MaxValue임을 의미합니다.

32 비트 시스템에서 Integer.MaxValue 행을 누르기 오래 전에 문제가 발생합니다. DataGrid에 추가 된 모든 항목에는 일정한 오버 헤드가 있습니다. 각 항목의 오버 헤드가 4 바이트 인 경우 Integer.MaxValue/4를 최대한 활용할 수 있습니다. 이것은 다른 컨트롤, 내부 WinForms 리소스 등을 고려하지 않았기 때문에 문제에 대한 단순한보기입니다.

몇 개의 레코드를 추가하려고합니까?

1

사용 가능한 메모리 또는 Integer.MaxValue의 물리적 한계를 벗어나는 하드 한도를 인식하지 못합니다. 그래도 나는 놀라지 않을 것이다. 더 중요한 무엇

는 데이터 그리드가 실제 사용자에 표시되는 시각 구조는 것입니다. 사용자는 1000 개의 항목이있는 그리드를별로 좋아하지 않을 것입니다. 100,000+은 말할 것도 없습니다 (이전에 본 적이 있습니다).

요점은 당신이 거기에 넣을 수있는 최대 레코드에 대해 걱정하기보다 페이징 또는 더 나은 검색 메커니즘을 구현하는 것이 좋습니다.

0

DataGridView.Rows 컬렉션의 Count 속성은 Integer이므로 4 바이트 부호 정수의 정상 범위는 유효 한계로 적용한다 : 0 2,147,483,647

하기 Rows 컬렉션 실제로 유지 것과 , 확실하지 않습니다 ... 귀하의 응용 프로그램이 실제로 무엇을하고 있는지에 달려 있습니다.

0

Integer.MaxValue 외에도 응용 프로그램에서 사용할 수있는 메모리에 따라 달라집니다. & 이미 사용되었습니다.

왜 모든 행을 한 번에 그리드에 채울 생각입니까?
사용자에게 모든 레코드를 보여주는 것은 의미가 없습니다.

관련 문제