2013-07-05 2 views
0

나는 이와 같은 계층 구조를 가지고 있습니다. treegridview의 자식 노드 선택을 기반으로 datagridview의 특정 행 표시

  +GroupID 
      ------StringID 
      ------StringID 
      ------StringID 
      +GroupID 
      ------StringID 

는 지금은 GROUPID 년대 클릭 할 때 datagridview의 특정 행을 표시하는 방법을 알고있다. 그러나 StringID를 클릭 할 때 트리에서 현재 선택된 노드의 값을 가져와 GroupID 및 StringID *를 기반으로 datagridview에 표시하는 방법을 모르겠습니다.

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    { 
     int outva; 
     dataGridView1.ClearSelection(); 
     if (int.TryParse((e.Node.Text), out outva)) 
     { 
      save=Convert.ToInt16(e.Node.Text); 

      int row = dataGridView1.Rows.Count; 
      ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "Groupid =" +save; 
     } 
     else { 
     // dataGridView1.Rows[i].Visible = false ; 
      // dataGridView1.Columns.Clear(); 
     } 
    } 
+0

어떤 오류가 발생합니까? –

+0

나는 모든 노드가 클릭 될 때마다이 이벤트가 발생하고 stringid를 처리하지 않기 때문에 stringid (자식 노드)가 클릭되었을 때 확인하는 방법을 묻는 오류가 발생하지 않습니다. – soldiershin

답변

1

우선 몇 가지 팁 : 여기

datagridview에하여 그룹 ID에 대한 코드 선택 및 디스플레이 1이 충분한 경우 outva이 들고 (

  1. 당신이 2 번 캐스팅하여 id이므로 변환이 필요 없음)
  2. node/children에 대해 노드 마우스 클릭이 발생하면 클릭 한 유형 (그룹 ID 또는 문자열 ID)을 어떻게 든 결정해야합니다. 노드가 부모가있는 경우 그래서 문자열 ID 또는 노드에 아이가있는 경우는 그룹 ID

    THER mayebe 일부 개선 당신이 당신의 트리를 생성하는 방법에 따라하여 필요 물론
    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    { 
        int outva; 
        dataGridView1.ClearSelection(); 
    
        if (int.TryParse((e.Node.Text), out outva)) 
        { 
         //save=Convert.ToInt16(e.Node.Text); //not needed 
    
         string filterBy; 
    
         if (e.Node.Parent != null) 
         { 
          filterBy = "GroupId = " + outva; 
         } 
         else 
         { 
          filterBy = "StringId = " outva; 
         } 
    
         //int row = dataGridView1.Rows.Count; // not needed 
    
         ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = filterBy; 
        } 
        else 
        { 
    
        } 
    } 
    

경우 예를 들어, 확인.

+0

고마워 ... 지금 당장, 내가 약간의 수정을했고 지금은 완벽하게 잘 작동한다. – soldiershin

관련 문제