2011-03-01 3 views
0

각 행에 대한 데이터와 확인란이있는 Windows Forms DataGridView가 있습니다.다른 페이지에서 DataGridView의 선택된 행을 얻는 방법

특정 행에 대한 확인란을 선택하면 선택한 모든 행이 다른 페이지에 채워집니다.

if (grdEmp.Rows.Count > 0) 
     { 
      var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows 
            where Convert.ToBoolean(coll.Cells["Select"].Value) == true 
            select coll; 
      if (selectedEmpIDs.Count() > 0) 
      { 
       foreach (DataGridViewRow row in selectedEmpIDs) 
       { 
        selectedEmp+= row.Cells["EmpId"].Value + ","; 
       } 
      } 
     } 

이것은 한 페이지에만 적합합니다.

다른 페이지로 이동하여 선택한 행을 클릭하면 이전 행이 해제됩니다.

어떻게 해결할 수 있습니까?

감사 cmrhema

참고 : 나는 그것이 페이지에 대한 좋은 작품을 의미 할 때 혼란을 드려 죄송합니다, 나는 페이징을 의미했다.

내가 더 입력을 추가 할 필요가 있다고 생각

,

이있는 gridview에서 10 페이지가 있습니다.

gridview의 각 페이지에서 다음 페이지 (다음 버튼)를 클릭하여 첫 번째 레코드를 차례로 선택합니다.

마지막으로 선택한 레코드 만 표시되고 다른 레코드는 무시됩니다.

prblm

+0

숨겨진 필드에서 선택한 ID를 유지 한 다음 jquery – V4Vendetta

+0

@ V4Vendetta : Winforms의 JQuery를 통해 다시 확인해야합니다. 그리고 WebForms에서조차도 페이지간에 이동하는 경우 어떻게 JQuery를 사용하여 이전 페이지의 숨겨진 필드에 액세스 할 수 있습니까? – Anuraj

+0

@Anuraj : 죄송합니다. 내 실수 ... 나는 그가 페이징을 언급하고 있다고 생각했습니다. – V4Vendetta

답변

0

에게이 될 수 무엇 당신은 Program.cs를 사용하거나 정적 클래스를 사용하여, 세계적으로 목록 또는 사전 또는 기타 수집 유형을 사용할 수 있습니다. 페이지를 떠나기 전에 선택한 행을 목록에 저장하십시오.

0

ids 목록에 쉼표로 구분 된 문자열 문자열을 사용하는 대신 List를 사용할 수 있습니다.

코드는 다음과 같이 뭔가 될 것이다 :

if (grdEmp.Rows.Count > 0)   
{    
    var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows          
    where Convert.ToBoolean(coll.Cells["Select"].Value) == true          s 
    select coll;    

    if (selectedEmpIDs.Count() > 0)    
    {     
     foreach (DataGridViewRow row in selectedEmpIDs) 
     { 
      if (!listOfIds.Contains((int)row.Cells["EmpId"].Value)) 
      { 
       listOfIds.Add(((int)row.Cells["EmpId"].Value)); 
      } 
     } 
    } 
}   

당신은 너무 아마 더 잘 작동합니다 확인란을 선택 이벤트에 대한 이벤트 처리기를 추가하는이 목록에서 항목을 제거하는 방법이 필요합니다.

List 개체 자체는 DataGridView를 포함하는 양식의 클래스 수준 개체로 간단하게 살 수 있습니다.

양식간에 페이징을 관리하는 경우 다소 복잡해 지지만 선택한 ID 목록을 유지 관리하는 것과 동일한 원칙이 적용됩니다.

관련 문제