2012-03-05 2 views
2

템플릿 필드와 하나의 바운드 필드로 확인란 컨트롤이있는 gridview가 있습니다. 격자가 함수를 통해 모든 포스트 백에 바인딩되고 모든 포스트 백에서 그리드 내용이 동일하게 유지됩니다. 체크 박스 중 하나를 체크 한 다음 페이지의 끝에있는 버튼을 클릭하면 특정 행 정보를 저장해야합니다. 그러나 체크하고 버튼을 클릭하면 해당 정보를 찾을 수 없습니다. 로드 및 다음 모눈 다시 채 웁니다 및 확인란 선택을 취소하고 아무 CheckedChanged 이벤트 발생합니다.이 내게 도우십시오 체크 할 때마다 모든 다시 게시 확인란의 상태를 유지해야합니다. 어떻게 이렇게 ??격자보기의 체크 박스 컨트롤

+0

모든 다시 게시에서 표를 바인딩해야합니까? – pavanred

답변

0

당신이 asp.net 4.0를 사용하면 3.5을 사용하는 경우

<asp:GridView id="GridView2" runat="server" EnablePersistedSelection="true"> 
</asp:GridView> 

를 사용하는 경우이 가능, 당신은 viewstatecheckbox 정보를 유지해야합니다. 이것이 도움이되기를 바랍니다.

http://www.codeproject.com/Articles/202938/How-to-select-multiple-records-from-the-GridView-a

또 다른 옵션 :

이 MSDN은 핫메일 유형의 gridview을 기술 한 방법입니다 ..이이 GridView 컨트롤을 기존 확장 할 필요합니다 .. 도움이 될 수있다. http://msdn.microsoft.com/en-us/magazine/cc163612.aspx

감사합니다.

+0

asp.net 3.5 사용하고 여러 dropdownlist controls..now에서 서버에 여러 포스트 백을하고 있어요 그리드에서 일부 확인란을 선택한 다음 끝에 단추를 클릭하면 그리드가 나타납니다. page_load 후 선택한 것들을 확인하지만이 문제는 page_load에서 데이터를 바인드하는 함수가 호출되고 체크 박스가 선택 취소 된 이후로 발생하지 않습니다 .i는 가능한 경우에만 포스트 백을 수행하지 않고 그리드에서 javascript를 사용한다고 생각했습니다. 컨트롤 .. – user1249061

+0

Ajax는 옵션이지만 현재 이벤트를 처리하는 방식을 변경해야합니다 .. 한가지 묻는 것은 checkbox를 일부 dataitem 요소에 바인딩합니까? checkbox를 실제로 databind 할 필요가 있습니까? –

+0

gridview 컨트롤을 확장하여 또 다른 옵션을 추가했는지 확인하십시오. 도움이 될 것이라는 희망이 있습니다. –

0

page_load 이벤트 함수에서, 당신의 영구 데이터

if (!IsPostBack) 
{ 
    //your static data 
} 
+0

하지만 포스트 백이 여러 번 happeneing되고 그리드가 모든 포스트 백에 표시되어야합니다. if 데이터 만 바인딩하는 함수를 호출합니다. if (! IsPostBack) 이후 포스트 백에서 눈금이 보이지 않게됩니다. – user1249061

0

이 특정 문제는 매우 일반적이다 위해 다음 코드를 사용하십시오. "간단한"해결책을 아직 보지 못했지만, 여기에 사용 된 3 가지 방법이 있습니다. 각각은 시스템의 한계로 인해 사용되었습니다.

해결 방법 1
를 사용하여 AJAX. 업데이트 패널에 컨트롤을 배치하여 변경 사항을 데이터베이스에서 "실시간"으로 유지할 수 있습니다. 이것은 실제로 "단순한"해결책이 아니지만 제 의견으로는 구현하기가 가장 쉽습니다. 변화가 즉각적으로 이루어지기 때문에 포스트 백 (post-backs)과 지속성에 대해 걱정할 필요가 없습니다.

해결책 2
"변경 관리"제어를 사용하십시오. 관련 컨트롤에서 변경 한 내용을 추적하는 데 사용되는 숨겨진 컨트롤을 적용 할 수 있습니다. 최소한 컨트롤 ID와 새 값 (어떤 종류의 "롤백"기능이 필요한 경우 이전 값일 수 있음)을 제공하는 일관된 데이터 구조를 고안해야합니다. 숨겨진 컨트롤 값에 대한 변경 사항이 구조화되어 복제되지 않도록하려면 JavaScript로 코딩해야합니다. 그런 다음 다시 게시 할 때이 컨트롤의 값을 읽고 관련 변경을 수행 한 다음 적절하게 데이터를 리 바인드해야합니다. 이것은 상당히 성 가실 수 있으며이 응용 프로그램을 후임자에게 전달할 경우 잘 문서화되어야합니다.

해결 방법 3
사용 CheckChanged 이벤트에 대한 다시 게시 및보기 상태에서 관리하는 모든 데이터를 유지합니다. GridView의 RowItemCreated 이벤트 중에 관련 셀에서 확인란 컨트롤을 찾은 다음 해당 컨트롤에 대리자 처리기를 수동으로 추가하여 CheckChanged 이벤트 발생시 다시 게시를 처리 할 수 ​​있습니다. 그러면 즉시 변경할 수 있습니다. 이것의 단점은 PostBack 이벤트가 빈번하고 무거워진다는 것입니다.ViewState에 많은 양의 데이터를 저장하는 경우 페이지로드가 느려지고 응답이 없으므로 ViewState에 대해 선택한 구조에 관계없이 크기를 작게 유지해야합니다.

관련 문제