2009-07-22 3 views
1

WinForms DataGridView로 고민하고 있습니다.언 바운드 데이터 소스에 대한 DataGridView 열 구성

public class BorderFlowHistoryElement 
{ 
    public string nodeTitles { get; set; } 
    public double borderFlowRatio { get; set; } 
    ... 
} 

나는 이러한 요소 목록 작성 : 내가 표시 할 요소로 사용하는 것이, 클래스가 thise 요소의 목록이 포함

List<BorderFlowHistoryElement> clusterHistory 

, 즉이 표시되어야 내 DataGridView. Grid의 DataSource에서 목록을 바인딩했습니다.

dataGridViewCluster.DataSource = clusterHistory; 

이제 DataGridView에 목록이 표시됩니다. 이제는 double 값을 표시하는 열의 서식을 지정하여 5 자리를 표시하려고합니다. 나는 다음과 같이 시험해 보았다 :

dataGridViewCluster.Columns[1].DefaultCellStyle.Format = "n5"; 

그러나 이것은 열에 아무런 영향을 미치지 않는다. 누구나 내가 어떻게 할 수 있겠습니까? 또한, 가장 큰 항목에 가장 적합하도록 columnwidth의 크기를 조정하려고합니다. 사전에

감사합니다, 프랭크

+0

총 자릿수 또는 정밀도를 찾으십니까? 정밀도를 지정하고 있기 때문에 숫자가 1234이고 N5를 사용하면 1,234.00000이됩니다. 너가 원하는게 그거야? – joshlrogers

+0

나는 정밀도를 찾고있다. 예를 들어 3.1415672467234823499821은 3.14157 – Aaginor

+0

이되어야합니다. 잘 작동합니다. –

답변

1

난 당신이 짓을 내가 전혀 문제가 없었다 무엇을 복제했다. 원하는 결과를 실제로 얻을 수 있는지 데이터를 확인 했습니까? 여기

난 그냥 참조를 위해 한 일이다

private void button1_Click(object sender, EventArgs e) 
    { 
     IList<BorderFlowHistoryElement> clusterHistory = FillClusterHistory(); 

     dataGridView1.DataSource = clusterHistory; 

     dataGridView1.Columns[1].DefaultCellStyle.Format = "n5"; 

     dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 

    } 

    private static IList<BorderFlowHistoryElement> FillClusterHistory() 
    { 
     IList<BorderFlowHistoryElement> clusterHistory = new List<BorderFlowHistoryElement>(); 


     for(int i = 5000; i < 5020; i++) 
     { 
      BorderFlowHistoryElement element = new BorderFlowHistoryElement(); 

      element.nodeTitles = Guid.NewGuid().ToString(); 

      element.borderFlowRatio = i * 3.3.1415672467234823499821D; 

      clusterHistory.Add(element); 
     } 

     return clusterHistory; 
    } 
} 

public class BorderFlowHistoryElement 
{ 
    private string _NodeTitles; 
    private double _BorderFlowRatio; 

    public string nodeTitles 
    { 
     get { return _NodeTitles; } 
     set { _NodeTitles = value;} 
    } 

    public double borderFlowRatio 
    { 
     get { return _BorderFlowRatio; } 
     set { _BorderFlowRatio = value;} 
    } 
} 

난 그 어떤 방식으로 도움이되기를 바랍니다. 보시다시피 자동 크기 조정도 할 수 있습니다.

+0

그것은 나를 크게 도왔다. 그것은 나의 형식 코드가 정확하다는 것을 보여 주었고 실수는 다른 곳에 있어야 할 필요가 있음을 보여 주었다. 그리고 나는 그 놈을 발견했습니다 : 먼저 VS-Designer에서 ColumnTemplates를 생성하는 실험을했습니다. 그것은 작동하지 않았지만, 나는 그들을 모두 삭제하는 것을 놓쳤다. (나는 이것이 DataSource에 내 List를 바운딩 할 때 덮어 써 졌기 때문에 문제가되지 않을 것이라고 생각했다.) 그러나 그들의 순수한 존재가 프로그램 적으로 그리드를 형성하는 것을 방해합니다. 또한 자동 크기 기능이 내가 원하는 기능이었습니다. 많은 노력에 감사드립니다! – Aaginor

관련 문제