2014-07-16 2 views
0

사용자가 Excel 파일을 가져 와서 페이지에서 특정 수정 작업을 수행하고 같은 파일로 내보낼 수있는 ASP.NET MVC 4 솔루션을 설계하고 있습니다. 체재. Grid 스프레드 시트의 모든 데이터를 포함하는 큰 데이터 세트의 내용을 표시하는 Grid 뷰를 만들려고합니다.데이터 세트의 모든 행/열 데이터 반환

public ActionResult Grid() 
    { 
     DataSet ds = TempData["DataSet"] as DataSet; 
     string exampleCell = ds.Tables[0].Rows[3][2].ToString(); 
     return View(); 
    } 

exampleCell은 테이블에서 단일 셀을 추출하는 방법의 예입니다. 데이터 세트의 모든 열과 행을 반복하고이 방법을 사용하여 모든 데이터를 추출 할 수 있다고 상상해보십시오. 그렇다면 어떻게 모든 exampleCell을 하나의 View에 표시 할 수 있습니까?

+1

이것은 혼란스러운 질문입니다. Excel에서 발생하는 데이터는 산만합니다. 어쩌면 FoxPro 또는 펀치 카드에서 유래했을 수도 있습니다. 요점은 이미 데이터 세트가 있고 MVC에 데이터 테이블을 표시해야한다는 것입니다. 다음은 MVC 용 HTML 테이블에 데이터를 표시하는 여러 가지 방법을 언급 한 (unfortuantely closed) 질문입니다. https://stackoverflow.com/questions/177275/grid-controls-for-asp-net-mvc – MatthewMartin

+0

일부를 제거했습니다. 그것의 언급은 Excel 스프레드 시트에서 파생 된 DataSet입니다. 데이터 세트가 Excel 스프레드 시트의 데이터를 표시한다는 사실과 관련하여 올바른 접근 방식을 사용하고 있는지 확실하지는 않습니다. 그럼에도 불구하고 뷰에서 exampleCell의 내용을 렌더링하는 방법이나 뷰에 n x m exampleCells를 표시하는 방법을 모르겠습니다. 이러한 라이브러리 중 하나가 DataSet에서이를 수행합니까? – alex

답변

1

반복되는 모델에 대해 모델을 만드는 것이 훨씬 낫습니다. 이렇게하면 사용자가 클라이언트 측에서 Save를 클릭 할 때 MVC가 Model을 생성 할 수 있습니다.

그래서 각 행에 값을 캡슐화 할 클래스가 있습니다. 생성 한 첫 번째 모델의 IEnumerable/IList가있는 다른 모델을 준비하십시오.

컨트롤러 메서드에서 DataSet을 이러한 모델로 변환 한 다음 컬렉션이있는 모델을보기로 전달합니다. 열거 형을 반복하여 HTML 표/표를 채 웁니다.

모든 변경 내용을 한 번에 저장하려면 표/표를 양식에 넣고 같은 모델 (IEnumerable 포함)을 POST 메서드의 매개 변수로 사용하십시오. 그러면 서버를 다시 호출 할 때 전체 모델이 다시 채워집니다.

대용량 데이터 덤프를 다시 수행하지 않는 한 변경 사항을 파악하기가 다소 힘들 수도 있습니다. 따라서 각 동작을 저장하려면 간단하게 수행 할 수 있습니다 단일 클라이언트 측 AJAX 호출.

+1

동의. 데이터 세트에 직접 바인드 할 수있는 권리를 얻는 것보다 빨리 처리하는 것처럼 보일 것입니다. 이와 같이 "빨리 끝내라"라는 바인딩을 원한다면 웹 양식이 MVC가 아니라 이동 방법 일 것입니다. 기본 모델 바인더가 데이터 세트를 처리 할 수 ​​있을지 궁금합니다. – xDaevax

+0

그런 데이터 세트로 작업하려면 웹 양식에 동의해야합니다. 이 모든 문제를 해결하기위한 전체적인 노력의 일부는 데이터가 Excel에서 얻은 방법 (OP의 질문에서 추상화 된 것)에 따라 달라집니다. 웹을 사용하는 경우 서버용으로 설계되지 않았으므로 기본 Excel COM을 사용하지 않아야합니다. EPPlus와 같은 것이 훨씬 더 나은 솔루션이 될 것이며 모델 객체로 작업하는 것보다 DataSet에 정보를 가져 오는 것이 더 많은 작업이 될 것입니다. – krillgar

+0

물론 데이터 소스에서 DataSet을 제공하도록 코드가 이미 설정되어 있으므로 목록에 쉽게 들어갈 수 있고 Excel COM을 피하는 것이 쉽지 않을 수도 있다는 전체적인 논의가 논리적 일 수 있습니다. – krillgar

관련 문제