2012-03-29 4 views
1

내 개체 목록의 텍스트 링크에 ​​바인딩 된 datagridviewlinkcolumn이있는 datagridview가 있습니다. 텍스트 링크는 파일에 대한 링크이며 파일은 네트워크 저장소에 깊숙히 묻혀 긴 링크를 만듭니다. 각 전체 링크의 일부만 표시하도록 linkcolumn의 링크 표시 값을 변경할 수있는 방법이 있습니까? 즉 - 파일 이름 자체?DataGridViewLinkColumn의 표시 값 변경

링크 열의 표시 값에 대해 동일한 헤더 텍스트를 사용할 수 있음을 읽었지만 모든 표시 값이 다를 수 있는지 궁금합니다.

요약하면, 표시하고자하는 모든 부분이 다르고 전체 파일 경로에 대한 실제 연결 지점을 갖고있는 반면에 linkcolumn에 파일 링크의 일부를 표시 할 수 있습니까?

답변

0

알아 냈어. 거기에이 할 수있는 더 좋은 방법입니다,하지만 난 내 객체에 링크의 단축 버전을 추가, 내 dataGridView1_CellContentClick 경우에, 나는 행 (dataGridView1.Rows[e.RowIndex].DataBoundItem)와 관련된 객체를 얻고, 완전에 System.Diagnostics.Process.Start()를 호출하는 경우

확실하지 않음 리턴 된 오브젝트의 규정 된 파일 경로.

+0

수정 사항을 축하합니다! 가능한 경우 답변을 '수락'으로 표시하여 다른 사람이 귀하의 질문에 답변하고 귀하의 솔루션에서 배울 수 있도록하십시오. 건배 ~ –

+0

@ 존 : 이것을 달성하기 위해 다른 방법을 찾았습니까? –

0

나는 이것을 달성하는 더 좋은 방법을 찾았습니다. 만드는 동안

첫째, DataGridViewLinkColumnUseColumnTextForLinkValue = false

전체 경로 네트워크 스토리지에 깊이 묻혀있는 파일의DataGridViewLinkColumnText 속성을 설정 설정합니다.

이제 DataGridViewCellFormatting 이벤트를 처리하고 CellContentClick을 처리 할 필요가 링크의 클릭에 모든 작업을 수행하려면 링크

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (excelDataGridView.Columns[e.ColumnIndex].Name.Equals("Links")) 
     { 
      if(e.Value != null) 
       e.Value = Path.GetFileName(e.Value.ToString()); //change the display name for Hyperlink 
     } 
    } 

표시 이름에 셀의 Value 속성을 설정 DataGridView의 이벤트는 다음과 같습니다.

private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if(e.ColumnIndex == excelDataGridView.Columns["Links"].Index) //Handling of HyperLink Click 
     { 
      string cellValue = excelDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 
      Process.Start(cellValue); //assumes the link points to the text file and opens it in the default text editor 
     } 
    }