2011-12-14 2 views
0

지난 한 시간 동안이 작업을 시도했지만 아직 아무것도 얻지 못했습니다. 설명해 주려고합니다.동적으로 GridView 버튼으로 자바 스크립트를 바인딩하십시오.

자바 스크립트를 사용하여 HTML 표를 만들고 gridview에서 항목을 선택할 때마다 행을 추가하여 일종의 요약 장바구니를 만들려고합니다.

버튼이 들어있는 TemplateField가있는 gridview가 있습니다. 있는 gridview는 다음과 같습니다

Property | Quantity | Order | Action 
Pencil | 10 | (textbox) | (button) 
Pen | 5 | (textbox) | (button) 

아마이 버튼은 HTML 테이블 (요약 쇼핑 카트)에 새 행을 삽입 할 것 onclientclick 이벤트가 있습니다.

<SCRIPT language="javascript"> 
     function addRow(tableID,property,order) { 

     var table = document.getElementById(tableID); 

     var rowCount = table.rows.length; 
     var row = table.insertRow(rowCount); 

     var cell1 = row.insertCell(0); 
     cell1.innerHTML = property; 

     var cell2 = row.insertCell(1); 
     cell2.innerHTML = order; 

    } 

이 자바 스크립트를 내 GridView의 (button)에 바인딩하는 방법을 모르겠다. (텍스트 상자)의 값을 전달해야하므로 DataBound 이벤트에 바인딩 할 수 없습니다.

답변

2

이렇게하려면 jquery live이 필요합니다. 버튼 필드에 클래스 이름을 추가하고 'grid1'이 그리드의 ID 이름이라고 가정하면이 작업 방식은 다음과 같습니다.

$('#<%=grid1.ClientID %> .buttonClassName').live('click', function(){ 
    var next = $(this).closest('tr');// this line should find the previous tr 

    next.after('<tr><td>first cell</td><td>Second Cell</td></tr>'); 
}); 
+0

고마워, 내가 돌아올 때 이것을 시도해 보겠다. BTW, 나는 빠른 검색을 수행하고 라이브가 중단되었음을 알았습니까? –

+0

감사합니다. 하지만 어떻게 GridView 셀에서 자바 스크립트로 일부 변수를 전달할 수 있습니까? 예를 들어, GridView의 특정 행 안에있는 텍스트가있는 코드에서 "첫 번째 셀"을 변경하려고합니다. –

+0

첫 번째 의견을 올리면 바로 그 사실을 .on()으로 대체 할 수 있습니다. 아직 경험이 없지만 두 번째 의견/질문을 이해할 수 없습니다. – Jake

0

Gridview가 렌더링 된 후에 이벤트를 연결 하시겠습니까? jQuery를 사용할 수 있습니까?

http://forums.asp.net/t/1194696.aspx

위의 솔루션은 이었소는 생각이 도움이 될 수는 자바 스크립트 방법 clicked.In 버튼을 우리가 원하는 세포로 이동하여 제어를 얻을 수 있습니다 rowIndex에를 사용하는 경우 자바 스크립트 방법 그리드와 rowIndex에 전달하는 것입니다. 우리는 코드를 단순화 할 addRow 대신 jquery 대신 javascript를 사용할 수 있습니다.

+0

예 jquery도 옵션입니다. 사용자가 gridview의 (텍스트 상자)에 값을 입력 할 수 있기 때문에 렌더링 후 연결할 수 있다고 생각하지 않으므로 (단추)를 클릭 한 후에 JavaScript를 실행하는 유일한 방법이라고 생각합니다. 그게 내가 할 수없는 것입니다. –

관련 문제