2011-03-05 44 views
0

我有一個嵌套的gridview有45個複選框。我希望用戶能夠點擊一個複選框並將其值保存在單獨的gridview中,直到他們希望對其執行操作(類似於購物車)。從嵌套gridview獲取複選框的值

複選框嵌套在中繼器後面的第二級gridview中。

 <repeater> 
     <gridview> 
      <gridview> 
       checkbox 
      <gridview/> 
     <girdview /> 
    <repeater /> 

我有一個時間赫克試圖讓深,想了解jQuery的複選框的值,並認爲這是一個好時機。

我在想用戶會點擊複選框,jQuery會得到控件的id(和值),然後我可以將它傳遞給ajax回發觸發器並填充'shopping cart'gridview。我需要通過ajax的原因是我需要根據用戶選擇的複選框從數據庫中獲取更多值。

我想我可以從那裏拿走它。現在我最大的問題是搞清楚如何從複選框中獲取id和值。

+1

http://jsfiddle.net/AKU4W/只要遍歷無關緊要,只要綁定到特定的框。 - 在最壞的情況下,你可以使用ASP的'$ find()'來查找複選框控件,然後綁定到它們(或者找到gridview並找到其中的所有複選框)。 – 2011-03-05 23:41:13

+0

我很想縮小這回,因爲我需要了解發生了什麼之前,我有解決方案...我可以看到jQuery代碼點擊複選框,並返回嵌套複選框之一的控件ID? – IMAbev 2011-03-06 02:28:53

+0

謝謝,布拉德。在審查了您提供的鏈接之後,我能夠獲得目前所需的位置。我現在可以點擊複選框並獲取值。現在我需要計算如何將這個值傳遞給一個gridview ... – IMAbev 2011-03-06 03:09:29

回答

1

你應該能夠得到複選框的值(或數據)點擊多數民衆贊成的東西,如

$(「#GridView控件的包裝器複選框」)。住(「點擊」,功能(E) { //用價值形式點擊做某事

});

您可能想要使用這些信息來填充頁面上的其他位置,或者您可能希望將該值存儲在數據數組中。

數據數組基本上是一種讓您將關鍵值對數據存儲在jQuery中供用戶在頁面上採取其他操作時使用的方式。

在這裏閱讀更多 - >http://api.jquery.com/data/

1

從來沒有使用中繼器,但也有一些簡單的jQuery和HTML我認爲你可以得到相同的效果,而不在GridView控件的消腫:

保存爲HTML文件爲例

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
    <table id="tblItems"> 
     <tbody> 
      <tr> 
       <td>+</td><td>Category 1</td> 
      </tr> 
      <tr> 
       <td> 
        <table> 
         <tbody> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 1</td><td>Price</td> 
          </tr> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 2</td><td>Price</td> 
          </tr> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 3</td><td>Price</td> 
          </tr> 
         </tbody> 
        </table> 
       </td> 
      </tr> 
      <tr> 
       <td>+</td><td>Category 2</td> 
      </tr> 
      <tr> 
       <td> 
        <table> 
         <tbody> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 4</td><td>Price</td> 
          </tr> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 5</td><td>Price</td> 
          </tr> 
          <tr> 
           <td><input type="checkbox" /></td><td>Item 6</td><td>Price</td> 
          </tr> 
         </tbody> 
        </table> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
    <table id="tblResults"> 
     <thead> 
      <tr style="font-weight:bold"> 
       <td >Item Name</td><td>Price</td> 
      </tr> 
     </thead> 
     <tbody> 

     </tbody> 
    </table> 
</body> 
</html> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" ></script> 
<script> 
    $(document).ready(function() { 
     $('#tblItems > tbody > tr').each(function(i){ 
      $row = $(this); 
      if(i % 2 == 0){//even rows are expanders 
       $row.children('td:eq(0)').click(function(){ 
        var $tmp = $(this); 
        var next = i + 1; 
        $row.parent().children("tr:eq(" + next + ")").toggle(); //toggle the next row 
        if($tmp.html() == '+'){ 
         $tmp.html('-'); 
        }else{ 
         $tmp.html('+'); 
        } 
       }); 
      }else{//odd rows are collapsed by default 
       $row.toggle(); 
      } 
     }); 

     $('input[type="checkbox"]').change(function(){ 
      var $chkBox = $(this), 
       data = $chkBox.data('checkboxData'); 

      if(!data){ //Add some data to remember to this checkbox 
       $chkBox.data('checkboxData', { 
        id: Example.GetUniqueId() // create a unique ID for this checkbox 
       }); 
       data = $chkBox.data('checkboxData'); 
      } 
      if($chkBox.is(':checked')){ //checkbox is checked 
       $("#tblResults tbody").append($chkBox.closest('tr').clone().attr('id', data.id)); //copy the checked row and add ID 
       $("#tblResults input").parent().remove(); //remove the checkbox from the copied row 
      }else{ 
       $("#" + data.id).remove(); //remove copied row when not checked 
      } 
     }); 
    }); 

    Example = {}; 

    Example.GetUniqueId = function() 
    { 
     var dateObject = new Date(); 
     var uniqueId = 
       dateObject.getFullYear() + '' + 
       dateObject.getMonth() + '' + 
       dateObject.getDate() + '' + 
       dateObject.getTime(); 

     return uniqueId; 
    }; 
</script> 
+0

我同意bloat是gridview控件,但我還沒有。我已經創建了頁面,不幸的是,它的嵌套量遠遠超過了我的需求,但它仍然有效。感謝代碼 - 大量的思考。 – IMAbev 2011-03-06 02:25:41