CheckBox Check在Gridview中不在服务器端工作

时间:2013-01-01 07:30:40

标签: asp.net gridview checkbox

我在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;
            }

1 个答案:

答案 0 :(得分:1)

服务器控件的状态在viewstate中维护,并且更改控制状态,就像您正在更改已选中状态的复选框一样,客户端脚本(javascript)未在viewstate中更新。因此,当您访问服务器端的控件时,您无法获得更改。您必须将更改存储在某些hidden field中,并使用服务器端的隐藏字段来更新控件。这是asp.net实现viewstate

的方式