2012-09-20 2 views
0

DataSet에 데이터를 검색 할 때 year 열은 내 DataSet의 세 번째 열입니다. 이 칼럼을 사용한 후에는 계산이 필요하지 않으므로 Remove 메소드를 사용하여 칼럼의 이름을 Remove 메소드로 전달하면된다. 문제는 내가 foreach 루프의 데이터를 검색하므로 데이터를 다시 검색 할 때 열이 이제 DataSet의 마지막 열이며 액세스하려고 시도하면 year 열을 찾을 수 없다는 오류가 발생합니다. . 내 주위에이 방법은 내 DataTable에 복제 한 다음 내 DataTable 데이터 집합에서 각 행을 가져올 수 있지만 더 효율적인 방법 또는 방법을 원래 위치에 year 열 유지하는 것입니다. 내가 대화 상자를 열고 내보낼 데이터를 선택하면 위의 코드에서 강하게 입력 된 데이터 세트에서 열을 제거 할 때 오류가 발생 했습니까?

private int GetData() 
{ 
    dataSet.GetExportData(); 

    DataTable dt = dataSet.ExportData; 

    for(int i = 0; i <dataSet.ExportData; i++) 
    { 
     //Do Stuff 
    } 

    dataSet.Columns.Remove(dataSet.ExportData.YearColumn.ColumnName); 
} 

은, 그것은 처음 작동하지만 열린 대화 상자를 떠나 다시 내보내려면 버튼을 클릭하면 오류가 발생합니다. 대화 상자를 닫고 다시 열면 제대로 작동합니다. 이전에 dataSet.GetExportData() 버튼을 클릭하여 데이터를 검색 할 때 알아 차리기 전에 DataSet에 정의 된 위치 대신 마지막 열로 Year 열을 넣겠습니다. 문제는 아니지만 할 수 없습니다. 클론 (Clone)과 가져 오기 (Import)를 수행하는 것 외에이를 고치는 방법을 찾아야합니다.

+0

foreach 루프 내에서 열을 제거하고 다시 열 값을 검색하려고합니까? 코드를 게시 할 수 있습니까? – CjCoax

+0

@CjCoax - 예, 지금 당장 코드가 없지만 나중에 게시 할 예정입니다.하지만 내가 한 일은 정확히 무엇입니까? – Xaisoft

답변

0

코멘트에있을 더 나은 것,하지만 난 코드 스타일링을 활용하려면, 또한 코드가 작동 위

foreach (DataRow row in myTable.Rows) 
    { 
     //do something with year column 
     myTable.Columns.Remove("year"); 
    } 

코드를 조준없이 달성하고자 정확히 무슨 말을하기 어렵다 첫 번째 반복에서는 문제가 없지만 이후에는 실패합니다. myTable.Columns.Remove("year")은 현재 행의 테이블뿐만 아니라 테이블에서 전체 열을 제거하고 다음을 제공합니다. You'll get Column 'year' does not belong to table Table. 예외.

대신 myTable.Columns.Remove("year");을 foreach에서 가져 오지 않는 이유는 무엇입니까?

foreach (DataRow row in myTable.Rows) 
    { 
     //do something with year column 
    } 

    myTable.Columns.Remove("year"); 
+0

죄송합니다. 곧 말씀 드렸습니다. 데이터가 foreach 루프에서 검색되지 않습니다. 일부 코드를 게시합니다. – Xaisoft

+0

코드가있는 게시물이 업데이트되었습니다. – Xaisoft

관련 문제