2013-03-05 6 views
1

하나의 열에 CheckBox가있는 CompositeDataBoundControl이 있습니다. CheckBox는 OnCheckboxChanged 처리기로 AutoPostBack = True로 설정됩니다. 이제 체크 박스가 변경되면 데이터베이스 값을 true/false로 적절하게 업데이트합니다. 이 모든 것이 잘 작동합니다.jquery datables - ASP.NET 체크 박스가 두 번 이상 실행 중입니다.

이제 jquery datatables.net 플러그인을 추가하고 페이징을 사용하여 한 번에 10 개의 레코드를 표시합니다. 첫 페이지의 체크 박스를 업데이트하면 문제가 없습니다. 그런 다음 두 번째 페이지로 이동하여 확인란을 선택하면 해당 레코드가 업데이트되지만 page1의 확인란을 변경 한 시간에 대해 OnCheckBoxChanged 처리기가 시작됩니다. 그리고 그 모든 시간 동안, 그 확인란을 다시 설정합니다.

-> 코드 숨김에 다른 명시 적 핸들러 선언이 없으며 C#이므로 Handles 절이 발행되지 않습니다. -> 누군가 talking here 데이터 바인딩이 가능하지만 데이터 테이블을 사용할 때만 문제가 될 수 있습니다. 그래서 그것이 확실한 지 모르지만 나는 그것을 조사하고 있습니다.

을 확인하십시오. sample here을 확인하십시오.

문제를 재현하는 방법 : 1) 페이지 1에있는 동안 몇 개의 확인란을 선택하십시오. 체크 박스는 메시지를 다시 게시하고 업데이트합니다.

2) 이제 2 페이지로 이동하여 확인란을 선택하십시오. chbx가 다시 게시되고 그리드가 page1로 이동합니다. page1에서 선택한 chbx가 선택을 잃어 버렸습니다. page2로 이동하면 선택 항목이 계속 표시됩니다.

편집 같음 this is the issue입니다. 이제는 그것을 구현하기가 거의 어렵지 않습니다. 그것에 도움이 필요합니다.

나는 무슨 일이 일어나고 있는지 잘 모르겠습니다. 누구든지 비슷한 문제가 있었습니까?

+0

우리는 jquery Datatables도 사용하고 있지만 MVC에서는 지금까지이 문제가 발생하지 않았습니다. 그것은 당신이 ASP.NET WebForms –

+0

@ Jobert에 대한 포스트 백에 문제가있을 수 있습니다 ... 그것은 실제로 생각하는 데이터 테이블입니다. 그것은 여기에 언급 된 바와 같이 숨겨진 행을 다시 게시하지 않습니다 : http://stackoverflow.com/questions/6020574/pagination-with-selected-check-boxes-checkboxes-will-only-work-on-current-pagin – gbs

답변

0

문제는 숨겨진 행을 다시 게시하지 않는 datatables입니다. http://datatables.net/forums/discussion/3099/x&page=1

ASP.NET 스크립트 관리자/UpdatePanel와 함께 사용할 때조차 beginRequest 전에 다시 추가했다 있지만 여기에 언급 한 바와 같이 : 다음 링크에서 논의 그래서 난 내 테이블에 다시 추가 할 필요가

How do I disable or remove unnecessary form elements before an ASP.NET asynchronous postback?

예제 프로젝트에서 구현하면 코드가 추가됩니다. 이것은 내가 구현 한 코드입니다 :

//code-behind Page_Load 
ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "beforePostback", "beforePostback()"); 

// JS code 
var table; 
$(function(){ 
    table = $(".mygrid").dataTable(); 
}); 

function beforePostback() { 
    //table is the object that holds the dataTable 
    if(table!='undefined' && $(".mygrid thead").length>0){ 
     hiddenRows = table.fnGetHiddenNodes(); 
       $('table.mygrid tbody').append(hiddenRows); 
    } 
} 
관련 문제