我有一个带有两个复选框列的gridview。一个用于选择,另一个用于设置属性,例如“添加到收藏夹”。此gridview后面加载代码,复选框在Item Template中定义。问题是,如果有人检查同一行的两个方框,当他们刚刚选择“添加到收藏夹”并且这也应该自动检查选择复选框,这对用户不是很友好。我知道这可以使用jquery轻松完成,因为我不认为为这些选择做回发是一个很好的用户体验。我对jquery很新,所以任何帮助都会受到赞赏。
同一行上的复选框遵循相同的id约定,因此如果select是cbSelect_0,另一行将是cbfavorite_0。我还给了所有cbFavorite复选框同一个类“cbMul”然后我写了一个函数
function checkUncheck() {
$(".cbMul").checked(function() {
if ( $(this).attr('checked')) {
$('#myCheckbox').attr('checked', false);
} else {
$('#myCheckbox').attr('checked', 'checked');
}
}); }
现在,我不明白如何获取已选中的复选框的属性,替换名称并获取复选框的ID(如果选择)然后检查那个?
这是gridview:
<asp:GridView ID="gvEnvironments" EmptyDataText="--- No Data ---" runat="server" AutoGenerateColumns="false"
DataKeyNames="Id" >
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="cbSelectEnvironments" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="ID" InsertVisible="false" ReadOnly="true" SortExpression="Id" />
<asp:TemplateField HeaderText="Multi">
<ItemTemplate>
<asp:CheckBox ID="cbFav" runat="server" Checked="false" CssClass="cbMul" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Description" HeaderText="Description" HeaderStyle-Width="300px" SortExpression="Description" />
</Columns>
答案 0 :(得分:0)
这是一个小提琴:http://jsfiddle.net/FyDEk/
<强> HTML:强>
<table>
<tr>
<td>
<input class="cb1" type="checkbox" />
</td>
<td>
<div id="dd">text</div>
</td>
<td>
<input class="cb2" type="checkbox" />
</td>
</tr>
</table>
<强> JS:强>
$(function () {
$(".cb2").on("change", function () {
var cb = $(this),
cbIsChecked = cb.is(":checked"),
cbPrev = cb.parent().parent().find(".cb1");
if(cbIsChecked)
cbPrev.prop("checked", true);
else
cbPrev.prop("checked", false);
});
});
在CheckBox中添加适当的类。