2010-01-13 3 views
2

----> 세션 변수의 다른 페이지로 전달되는 데이터 테이블을 가지고 있습니다.세션 변수가 데이터 테이블에 할당되고 객체 참조에 문제가 있습니까?

----> 이제 다른 페이지에서 세션 변수를 datatable로 가져옵니다.

datatable ds_table = new datatable(); 
ds_table = (datatable)session["table_value"]; 

----> ds_table에서 일부 행을 필터링 할 때 문제가 발생합니다. 세션 변수에 영향을줍니다. ds_table에서 일부 행이 삭제 된 경우. 세션 변수에서도 삭제됩니다.

----> 그럼, 아무도 왜 이런 일이 벌어 지는지 말해 주시겠습니까?

나를 도와주세요. 그것의 필요한.

+0

내성이 필요하지 않습니다. –

+0

ok.thanks. 귀하의 조언을 위해 – sikender

답변

0

세션에 배치하기 전에 데이터 테이블을 복사하는 것이 좋습니다. 그런 다음 나중에 원래 데이터 테이블을 변경하면 영향을받지 않습니다.

당신이해야 할 모든

declare a new DataTable variable and copy it입니다 :
private void CopyDataTable(DataTable table){ 
    // Create an object variable for the copy. 
    DataTable copyDataTable; 
    copyDataTable = table.Copy(); 

    // Insert code to work with the copy. 
} 

는 그런 다음 세션에 copyDataTable를 넣을 수 있습니다.

+0

문제로 인해 세션 변수가 작성되지 않습니다. 문제는 세션 변수에서 datatable로 값을 가져 오는 것입니다. 그런 다음 다른 페이지에서 해당 데이터 테이블을 변경합니다. 그것은 또한 session.also에 대한 변경을 취합니다. – sikender

+0

다른 페이지로 이동하여 세션에서 DataTable을 사용하려면 세션에있는 DataTable의 복사본을 만듭니다. 그런 다음 세션에 남아있는 원래 DataTable에 영향을 미치지 않고 복사본을 변경할 수 있습니다. – DOK

+0

나는 당신이 말한대로 시도 할 것입니다. 그러나 그 종류의 효과적이지 않습니다. man.result는 전에받은 것과 동일합니다. – sikender

0

음, 세션 [ "table_value"] 3 데이터 테이블 포인트, 당신은 그 변수를 변경할 수 THEN 다른 변수에 그 값합니다 (데이터 테이블)를 할당하고, 확인은 변경에 relfected 될 경우 데이터 테이블 그러면 그림과 같은 효과를 볼 수 있습니다.

-----하지 항상,하지만 당신은 예시 된 경우 (그래서? DataTable을 공유 자원) 당신이 make a copy of the DataTable하려는처럼

+0

해결책인가 조언입니까? – sikender

0

는 소리. 이것을 시도하십시오 :

ds_table = ((datatable)session["table_value"]).Copy(); 

DataTable이 클 경우 나쁠 수 있으므로 염두에 두십시오. 그건 큰 DataTable을위한 Session 사용은 어쨌든 나쁜 생각처럼 들린다!

물론 작동 여부는 상태를 변경하는 위치에 따라 달라집니다 (몇 가지 큰 가정을했습니다). 아마도 당신이하고있는 일을보다 자세하게 기술 할 수 있으며, 더 많은 도움을 얻을 수 있습니다 (예 : 코드 예).

+0

나는 시도했지만 문제가있다. 내가 가진 것과 똑같아. – sikender

+0

확인. 정확히 무엇을하고 있는지에 대한 코드를 게시하십시오. – RichardOD

관련 문제