我们有一个包含多列的GridView。其中两列包含CheckBoxes,其余列包含TextBoxes或DropDownLists。
放置GridView的表单嵌入在母版页中。
在Header Row中使用CheckBox我们希望将最后一列中的所有复选框设置为标题中CheckBox的状态。我们不想设置第4列中的复选框。 CheckBox的ID为“chkUpdate”
我见过的示例每行只有1个复选框,并使用CSS类进行识别,但我们的GridView行上的两个复选框都使用相同的CSS类,因此必须创建一个新的CSS类似乎是错误的一个不同的CheckBoxes列
我知道我可以在GridView的行上使用每个循环,但无法弄清楚如何识别最后一列中的复选框
function checkAll(objRef) {
$("#<%=gv_Vials.ClientID %> tr").each(function() {
//What goes here? = objRef.checked;
};
}
我希望我已经解释了我的要求,但如果有人需要进一步澄清,请随时提出
答案 0 :(得分:1)
基本上,你可以使用jQuery的结尾选择器 - id*="chkSelected"
。它将选中chkSelected
<asp:GridView runat="server" ID="gv_Vials">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input id="btnCheckAll" type="checkbox" name="AllCheck" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox runat="server" ID="chkSelected" Checked='<%# bool.Parse(Eval("IsActive").ToString()) %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<script>
var checkBoxSelector = '#<%=gv_Vials.ClientID%> input[id*="chkSelected"]:checkbox';
$(document).ready(function () {
$('#btnCheckAll').live('click', function () {
if ($('#btnCheckAll').is(':checked')) {
$(checkBoxSelector).attr('checked', true);
}
else {
$(checkBoxSelector).attr('checked', false);
}
});
});
</script>
答案 1 :(得分:0)
我就是这样做的。
ASP.net:
<asp:GridView ID="gvStudents" runat="server" DataSourceID="SqlDataSourceStudents" AutoGenerateColumns="False" Width="100%" OnRowDataBound="gvStudents_RowDataBound">
<HeaderStyle BackColor="#5D7B9D" ForeColor="White" />
<AlternatingRowStyle BackColor="#EEEEEE" />
<RowStyle BackColor="White" />
<Columns>
**..normal column templates or boundfields go here..**
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox id="CheckBoxAll" runat="server" onclick="javascript:SelectAllCheckboxesCol(this);"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBoxAdd" runat="server" onclick="javascript:HighlightRow(this);"/>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
jQuery的:
//jQuery to select all checkboxes on the last column (4th column) of gvStudents
function SelectAllCheckboxesCol(chk)
{
$('#<%=gvStudents.ClientID %> >tbody >tr >td:nth-child(4) > input:checkbox').attr('checked', chk.checked);
//this works but there must be a better way! jQuery is not my fortae yet :)
cBox.attr('checked', chk.checked); //check all the checkboxes
cBox.click(); //click them all to fire the Highlightrow() function. This un-ticks the checkboxes!
cBox.attr('checked', chk.checked); //re-check them again!
}
//jQuery to highlight a row selected
function HighlightRow(chk) {
var isChecked = chk.checked;
var $selectedRow = $("#" + chk.id).parent("td").parent("tr");
var selectedIndex = $selectedRow[0].rowIndex;
var sColor = '';
if(selectedIndex%2 == 0)
sColor = '#EEEEEE';
else
sColor = 'white';
if(isChecked)
$selectedRow.css({
"background-color" : "Yellow",
"color" : "Black"
});
else
$selectedRow.css({
"background-color" : sColor,
"color" : "Black"
});
}
}
以上功能包括:
缺点: