2014-10-02 37 views
0

我有一个GridView,其中第一个字段是复选框。我想根据复选框的状态采取行动客户端(显示或隐藏行)。根据复选框字段在gridview中对行进行操作

感谢my previous StOf posting,我有一个RadioButtonList正确地发射我的Javascript。现在需要获取对相应行的引用。

我一直依靠几个问题和答案,建立我当前的Javascript:

$(function() { 
    $("#RadioButtonList1 input[id^=Radio]").click(function() { 
     var grd = $("#my_gridview"); 
     var rows = $("#my_gridview tr:gt(0)"); 

     switch (this.value) { 
      case "All": 
       { 
        $("#my_gridview tr").show(); 
       } 

      case "HideRequested": 
       { 
        var rowToShow = rows.find("td:eq(0)").filter(checked != "checked"); 
        rows.show().not(rowToShow).hide(); 
       } 

      case "ShowRequested": 
       { 
        var rowToShow = rows.find("td:eq(0)").filter(checked == "checked"); 
        rows.show().not(rowToShow).hide(); 
       } 

     } 
    }) 
}); 

但是当我运行这一点,我在JS控制台得到一个错误:的ReferenceError:检查没有定义。这很奇怪,因为它适用于其他问题,并且生成的HTML(在控制台中确认)包含input元素中的checked属性。的HTML是:

<table cellspacing="0" cellpadding="2" id="gv_grid" style="border-color:Black;border-width:1px;border-style:None;width:100%;border-collapse:collapse;"> 
    <tr class="grGridViewHeader" style="white-space:nowrap;"> 
     <th align="center" scope="col" style="width:100px;white-space:nowrap;">Select Entry</th><th scope="col">Entry Name</th><th align="left" scope="col">Type</th><th align="left" scope="col">Details</th> 
    </tr><tr valign="top" style="background-color:#BED3FC;border-style:None;"> 
     <td align="center" valign="middle" style="white-space:nowrap;"> 
         <input id="gv_grid_chk_selected_0" type="checkbox" name="gv_grid$ctl02$chk_selected" checked="checked" /> 
        </td><td>Entry 1</td><td style="font-size:Small;">Foo</td><td style="font-size:Small;">Assorted text.</td> 
    </tr><tr valign="top" style="background-color:White;border-style:None;"> 
     <td align="center" valign="middle" style="white-space:nowrap;"> 
         <input id="gv_grid_chk_selected_1" type="checkbox" name="gv_grid$ctl03$chk_selected" checked="checked" /> 
        </td><td>Entry 2</td><td style="font-size:Small;">Bar</td><td style="font-size:Small;">Assorted text.</td> 
    </tr><tr valign="top" style="background-color:#BED3FC;border-style:None;"> 
     <td align="center" valign="middle" style="white-space:nowrap;"> 
         <input id="gv_grid_chk_selected_2" type="checkbox" name="gv_grid$ctl04$chk_selected" checked="checked" /> 
        </td><td>Entry 3</td><td style="font-size:Small;">Baz</td><td style="font-size:Small;">Assorted text.<br /></td> 
    </tr> 
</table> 

我也曾尝试:

var checkboxArray = $('#my_gridview td input:checkbox'); 

其中确实产生复选框元素的数组,但我仍然不知道如何正确地过滤了checked财产,也不如何回到治理tr元素。

来源:

https://stackoverflow.com/a/6013026/2615836

https://stackoverflow.com/a/6068768/2615836

回答

1

在这里你去... http://jsfiddle.net/tdyhq8z7/2/

$(function() { 
    $("#RadioButtonList1 :radio").click(function() { 
     var $rows = $("#gv_grid tr:gt(0)").show(); 
     switch (this.value) { 
      case "HideRequested": 
       $rows.filter(function(){ 
        return $('td:first>:checkbox',this).is(":checked") 
       }).hide(); 
       break; 
      case "ShowRequested": 
       $rows.filter(function(){ 
        return !$('td:first>:checkbox',this).is(":checked") 
       }).hide(); 
       break; 
     } 
    }) 
}); 

//another solution: 
$(function() { 
    $("#RadioButtonList1 :radio").click(function() { 
     var $rows = $("#gv_grid tr:gt(0)").show(), $val=this.value; 
     if(this.value != "All"){ 
      $rows.filter(function(){ 
       var $checked = $('td:first>:checkbox',this).is(":checked"); 
       if($val == "HideRequested") return $checked; 
       else if($val == "ShowRequested") return !$checked; 
      }).hide(); 
     } 
    }) 
}); 
+0

这就像一个魅力,谢谢。请教我为什么它有效 - '>:'操作员做了什么?这听起来像是“搜索'td'为元素'checkbox'。 – 2014-10-03 13:32:22

+0

已更新$('td>:checkbox',this)to $('td:first>:checkbox',this)只与第一个”td“ in“tr” – 2014-10-03 17:43:47

+0

$('td:first>:checkbox',this)这里“this”表示当前行节点“tr”。“td:first”只给出“tr”中的第一个“td”。 td:first>:复选框'选择器在“tr”的“first td”中给出“复选框输入元素”child(>是子选择器)请参考[http://api.jquery.com/child-selector /](http://api.jquery.com/child-selector/) – 2014-10-03 17:48:13

相关问题