<asp:TemplateField>
    <HeaderTemplate>
        <input id="Checkbox2" type="checkbox" onclick="javascript:selectAllCheckBox();" />
    </HeaderTemplate>
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" />
    </ItemTemplate>
</asp:TemplateField>
gridview的模板列用了一个input类型的checkbox,通过javascript控制来选中全部asp:CheckBox,但是页面刷新的话,asp:CheckBox可以用IsPostBack保留选中状态,input类型的checkbox如何保留选中状态呢?

解决方案 »

  1.   

     <input id="Checkbox2" type="checkbox" onclick="javascript:selectAllCheckBox();" runat="server"   />也加runat="server" 
      

  2.   

    http://www.cnblogs.com/tianyige/archive/2008/09/04/1284289.html
    试一下
      

  3.   


    public static IList GetCheckedRowsIndex(GridView gv, string checkBoxName)
        {
            IList list = new ArrayList();        for (int i = 0; i < gv.Rows.Count; i++)
            {
                CheckBox chkBox = (CheckBox)gv.Rows[i].FindControl(checkBoxName);
                if (chkBox != null && chkBox.Checked)
                {
                    list.Add(i);
                }
            }
            return list;
        }
      

  4.   

    刷新前把这个list放到viewstate里
    刷新后再在加载gridviewRowBound的时候获取list里的index列表
    然后依次设置其是否选中其实你可以使用AJAX或者UpDatePanel来使其不会刷新不就行了吗
      

  5.   

    这样做会报“JScript运行时错误:缺少对象”,不行的
      

  6.   

    我不是要保留gridview每一行的CheckBox的状态,而是想保留模板列的标题头模板里的input类型的CheckBox的状态,就是<HeaderTemplate>
            <input id="Checkbox2" type="checkbox" onclick="javascript:selectAllCheckBox();" />
    </HeaderTemplate>这个,之所以用了这个html形式的CheckBox是为了使用javascript后面的这些<ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" />
        </ItemTemplate>我点按钮后刷新页面时,用IsPostBack就能不改变每一行的<asp:CheckBox>的状态,但是这个html的CheckBox的状态却保留不了
      

  7.   

    HTML 类型的CheckBox是不可能在回发到服务器端后还能保持住之前的状态,增加RunAt="Server"属性,我没试过;不过你前后都将CheckBox的状态保持住,我就不清楚LZ的目的了。
      

  8.   

    没办法,只好把html的checkbox换成asp.net的CheckBox控件,本来想用javascript实现全选功能免得页面闪,现在只好到cs代码里写了