2010-12-14 7 views
0

모든 행에 대해 GridView에 확인란과 텍스트 상자가 있는데 그 상태에 따라 텍스트 상자를 사용하거나 사용하지 않도록 설정할 수있는 자바 스크립트를 작성하고 싶습니다. 확인란 (선택 또는 선택 취소). 나는 JS에 행 인덱스를 어떻게 든 써야한다고 생각한다. 이것이 가능한가?GridViewRow에서 텍스트 상자 사용/사용 안 함

답변

0

덕분에, 난 그냥 포스트 백을 수행하여이 문제를 해결 일한 -하지 가장 좋은 방법을하지만 시간 제약으로 인해 그것은 논리적 인 선택이었다 내가 이것을 추가해야 할 유일한 것은 비활성화하는 것입니다

1

당신이 다음이 아주 쉽게으로 수행 할 수 있습니다 jQuery를 사용할 준비가 된 경우는 다음과 같습니다

$(document).ready(function() { 

    $('.grid tr').each(function() { 
     var r = $(this); 
     var c = r.find('.check'); 
     var t = r.find('.text'); 
     var f = function(c1, t1) { return function() { 
      if (c1.attr('checked')) { 
       t1.removeAttr('disabled'); 
      } 
      else { 
       t1.attr('disabled', 'disabled'); 
      } 
     }; 
     }; 
     c.click(f(c, t)); // attach click event handler 
     f(c, t); // set initial state 
    }); 
}); 

위 스크립트가있는 gridview 테이블이 grid CSS 클래스로 장식되어 각 텍스트 박스와 체크 박스로 장식되어 있다고 가정한다 checktext css 클래스입니다.

+1

asp.net 페이지에서 상태 유효성 검사를 봅니다. 페이지의 컨트롤 상태를 수정하기 때문에 상태 유효성 검사보기에서 오류가 발생합니다. 이러한 오류는 간헐적이며 디버그하기가 어렵지만 거기에 있습니다. 뷰 상태 유효성 검사를 사용하지 않도록 설정하면 JavaScript가 클라이언트 쪽에서 html 컨트롤을 수정할 기회를 주지만 서버 쪽에서는 그다지 신경 쓰지 않아도됩니다. – bleepzter

0


예.

는 다음을 수행하기 위해 필요한이 구현하려면 :

  1. 체크 박스의 상태에 따라 텍스트 상자의 활성화/비활성화를 처리하는 일반적인 자바 스크립트 함수를 작성;
    예 : -
    function ManageControlEnabling(sourceCheckBoxId, affectingControlId)
    {
    var sourceCheckBox = document.getElementById(sourceCheckBoxId);
    var affectingControl = document.getElementById(affectingControlId);
    var shouldEnable = false;

    if (sourceCheckBox && affectingControl)
    {
    shouldEnable = sourceCheckBox.checked;

    if(shouldEnable) 
        affectingControl.disabled = false; 
    else 
        affectingControl.disabled = true; 
    

    }
    }

  2. 는 그리드보기의 행 - 데이터 바인딩 이벤트를 처리합니다. 체크 박스의 상태에 따라 텍스트 상자 (각 행)의 활성화/비활성화를 처리하기 위해 .Net 코드에서 유사한 기능을 구현합니다. 또한 JavaScript 기능을 확인란에 추가하십시오.
    예 : -이 도움이된다면

    CheckBox checkSource; 
    TextBox textAffecting; 
    
    
    checkSource = e.Row.FindControl("cbSource") as CheckBox; 
    textAffecting = e.Row.FindControl("tbAffecting") as TextBox; 
    
    
    if(checkSource != null) 
    { 
        textAffecting.Enabled = checkSource.Checked; 
    } 
    
    
    checkSource.Attributes.Add("onclick", "ManageControlEnabling('" + checkSource.ClientID + "', '" + textAffecting.ClientID + "', true);"); 
    

를 참조하십시오.

감사합니다. 모든 답변에 대한

+0

당신의 도움을 주셔서 감사합니다 :) 슬프게도 작동하지 않습니다 - rowdatabound 부분은 작동합니다 (속성을 추가하고 텍스트 상자는 체크 박스 상태에 따라 사용 불가능/사용 가능하게 설정 됨). 그러나 확인란을 클릭하면 텍스트 상자가 사용 가능하게되지 않습니다. 모든 if를 꺼내 텍스트 상자를 활성화해도됩니다. – Chris

관련 문제