2012-09-07 3 views
0

여기에 GridView을 사용하여 데이터를 표시합니다. 그리고 Gridview 데이터를 Excel 형식으로 내보내려면 버튼 ("Download into Excel")을 사용하고 있습니다. Excel 형식으로 다운로드하거나 Excel로 내보내기가 완벽하게 작동합니다. 그 GridView 총 9 열을 보여줍니다.GridView를 Excel로 내보내기 일부 선택된 열 제거

제 문제는 엑셀 시트에 7 개 열 (우리 선택에 따라)을 표시하고 싶습니다. 표시되는 GridView은 평소와 같아야하지만 Excel에서는 원하는 열만 표시합니다.

이미 사용했습니다 GridView1.Columns.RemoveAt(2); 하지만 임의로 더 많은 열을 제거합니다.

+0

, 그것을 확인하시기 바랍니다. –

답변

3

.Net 4.0; VS2012

비슷하게 버튼을 비롯하여 Kedar에서 설명한 바에 따르면 그리드를 100 % 보았을 때 - RemoveAt (인덱스)가 작업을 수행하도록하는 것이 효과가 없다고 결론을 냈습니다. 내보낼 gridview에서 열을 제거하려면. 왜 그런지 모르겠지만, RemoveAt 이후에는 항상 그리드 뷰가 변경되지 않습니다.

엑셀로 내보내기를 원했던 포스터 (다시 말하면 지정된 열을 숨기기를 원했던 포스터)가 원하지 않는 열을 만들지 않아도되는 비슷한 질문을 보드에서 보았습니다. 명백한. 응답자는 공헌 할만한 일이 있었지만, 열을 직접 숨기는 (Visible = false로 설정) 화면 디스플레이에서 사라지는 것이 아니라 문제의 열을 EXPORT에 표시하지 않는 것이 목적이었습니다.

필자의 경우 gridview에서 열을 잃어 버리려고하고 있는데, Excel로 보내질 때, 동적으로 sql을 리 바인드하지 않고 가져 오지 않습니다. 나는 오류가 발생하지 않았는데도 RemoveAt (인덱스)가 작동하지 않는 것을보고 잃어버린 원인이 될 수 있다고 생각합니다. 나는 gridview.Columns.RemoveAt (index)가 매우 안정적으로 기능을 수행하지 못하게하는 원인이 무엇인지 알 수 없다. 모든 컬럼은 내가 수행 한 후에도 계속 존재한다.

다음 코드에서 RemoveAt (인덱스)가 아무 것도 수행하지 않는다는 것을 확인하기 위해 단일 열을 제거하는 것으로 목표가 축소되었습니다.

GridView gProgramProposalRequests가 UI에 나타납니다.
열을 제거한 다음 gridForExport를 내보내기 메서드에 전달하려고하므로 gridForExport 복사본을 만들고 있습니다. "제목"은이 실행에서 예제 열로 사용되는 표의 열 중 하나입니다.

 GridView gridForExport = (GridView)gProgramProposalRequests; 

     gridForExport.AutoGenerateColumns = false; 

     for (int i = 0; i < gridForExport.Columns.Count; i++) 
     { 
      if (gridForExport.Columns[i].HeaderText == "Title") 
       gridForExport.Columns.RemoveAt(i); 

     } 

"Title"이 여전히 존재합니다. 나는 그 응용 프로그램에게 Title이라는 제목의 열을 제거하라고 말한 것 같았습니다. 나는 실행 커서가 RemoveAt 라인을 수행하는 것을 본다. 내가 지정한 열은 중요하지 않습니다. -이 루프가 실행 된 후에도 이름이 지정된 열을 찾을 수 있습니다.

추가 정보 - 전 GridView 컬렉션에서 열을 삭제하려고했지만 성공하지 못했습니다. 이제는 CSV 콘텐트를 응답에 쓰는 대신, 지정된 열을 추가하지 못하게하는 결과를 얻고 싶습니다. 하지만 컨텐트 필드에서 쉼표를 처리하는 방법을 알아야합니다. http://wiki.asp.net/page.aspx/401/export-to-csv-file/

+0

스택 오버플로에 오신 것을 환영합니다!새로운 질문이있는 경우 [Ask Question] (http://stackoverflow.com/questions/ask) 버튼을 클릭하여 질문하십시오. 당신이 충분한 평판을 가지고 있다면, [당신은 upvote] (http://stackoverflow.com/privileges/vote-up) 질문. 또는 별표를 즐겨 찾기로 추가하면 새로운 답변을 알려줍니다. – Jack

2

덕분에 당신은 RemoveAt을 기능을 사용한 후있는 gridview를 데이터 바인딩해야합니다

내가 질문을 업데이 트했습니다
GridView1.Columns.RemoveAt(0); 
GridView1.DataBind();