我在Gridview中遇到问题复选框选中,服务器端复选框显示checked = false。
它真的很奇怪,我以前还没见过。
我写了以下代码。
<script type="text/javascript">
function SelectAll() {
if ($('.SelectAll input:checkbox').attr("checked"))
$('.chkTechs input:checkbox').attr("checked", true);
else
$('.chkTechs input:checkbox').attr("checked", false);
}
function SetCheckBoxes(item) {
//$(item).attr("target").checked // this is to find which element clicked
if ($('.chkTechs input:checkbox').filter(":not(:checked)").length > 0) {
$('.SelectAll input:checkbox').attr("checked", false)
}
else {
$('.SelectAll input:checkbox').attr("checked", true)
}
}
</script>
服务器端按钮单击
foreach (GridViewRow row in gvList.Rows)
{
CheckBox Checked = (CheckBox)row.FindControl("chkSelect");
bool isChecked = ((CheckBox)row.FindControl("chkSelect")).Checked;
}
答案 0 :(得分:1)
服务器控件的状态在viewstate
中维护,并且更改控制状态,就像您正在更改已选中状态的复选框一样,客户端脚本(javascript
)未在viewstate
中更新。因此,当您访问服务器端的控件时,您无法获得更改。您必须将更改存储在某些hidden field
中,并使用服务器端的隐藏字段来更新控件。这是asp.net实现viewstate
。