C# 在网格视图中将复选框选中值(初始值)设置为true会产生奇怪的行为

C# 在网格视图中将复选框选中值(初始值)设置为true会产生奇怪的行为,c#,asp.net,ajax,gridview,checkbox,C#,Asp.net,Ajax,Gridview,Checkbox,当我将gridview中的默认复选框设置为Checked=true时,我会面临一种奇怪的行为 <asp:UpdatePanel ID="UpdatePanel3" runat="server"> <ContentTemplate> <asp:Panel ID="pnl_lect" runat="server"> <asp:GridView ID="gv_lect" runat="server" A

当我将gridview中的默认复选框设置为
Checked=true时,我会面临一种奇怪的行为

    <asp:UpdatePanel ID="UpdatePanel3" runat="server">
        <ContentTemplate>
            <asp:Panel ID="pnl_lect" runat="server">
     <asp:GridView ID="gv_lect" runat="server" AutoGenerateColumns="False" DataKeyNames="prog_ser,lect_code,lect_type"
                        CssClass="formTable cr_center" OnDataBound="gv_lect_DataBound" OnRowDataBound="gv_lect_RowDataBound">
                        <Columns>
                            <asp:BoundField HeaderText="lect_name" DataField="name" />
                            <asp:TemplateField HeaderText="1">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_1" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="2">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_2" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="3">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_3" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="4">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_4" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="5">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_5" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="6">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_6" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="7">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_7" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="8">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_8" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="9">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_9" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="10">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_10" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="11">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_11" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="12">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_12" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="13">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_13" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="14">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_14" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="15">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_15" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="16">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_16" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="17">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_17" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="18">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_18" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="19">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_19" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="20">
                                <ItemTemplate>
                                    <asp:CheckBox ID="CheckBox_20" runat="server" Checked="false" AutoPostBack="true"
                                        OnCheckedChanged="CheckBox1_CheckedChanged" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView> 
  </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>


protectedvoid CheckBox1\u CheckedChanged(对象发送方,事件参数e)
{
bool res=真;
尝试
{
复选框chkbox=(复选框)发送方;
GridViewRow r=(GridViewRow)chkbox.NamingContainer;
ProgDesience abs=新的ProgDesience();
int progSer=int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex]。值[0]。ToString());
int-lectCode=int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex].Values[1].ToString();
int-lectType=int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex]。值[2]。ToString());
int sessionId=int.Parse(chkbox.ID.Split(“”“)[1]);
abs.LectCode=LectCode;
abs.LectType=LectType;
abs.ProgSer=ProgSer;
abs.SessionId=SessionId;
如果(chkbox.Checked)
{
res=abs.Add();
}
其他的
{
res=abs.Delete();
}
bind缺失();
}
捕获(异常ee)
{
res=假;
bind缺失();
}
}
/* =========================================================================== */
受保护的void gv_选择_行数据绑定(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.DataItemIndex>=0)
{
DataTable dt=((DataTable)视图状态[“abs”]);
如果(dt!=null&&dt.Rows.Count>0)
{
对于(int i=0;i protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            bool res = true;
            try
            {

                CheckBox chkbox = (CheckBox)sender;

                GridViewRow r = (GridViewRow)chkbox.NamingContainer;
                ProgAbsence abs = new ProgAbsence();

                int progSer = int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex].Values[0].ToString());
                int lectCode = int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex].Values[1].ToString());
                int lectType = int.Parse(((GridView)(r.NamingContainer)).DataKeys[r.DataItemIndex].Values[2].ToString());
                int sessionId = int.Parse(chkbox.ID.Split('_')[1]);
                abs.LectCode = lectCode;
                abs.LectType = lectType;
                abs.ProgSer = progSer;
                abs.SessionId = sessionId;
                if (chkbox.Checked)
                {
                    res = abs.Add();
                }
                else
                {
                    res = abs.Delete();
                }
                BindAbsence();
            }
            catch (Exception ee)
            {
                res = false;
                BindAbsence();
            }
        }
        /* =========================================================================== */
        protected void gv_lect_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.DataItemIndex >= 0)
            {


                DataTable dt = ((DataTable)ViewState["abs"]);
                if (dt != null && dt.Rows.Count > 0)
                {

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (((GridView)(e.Row.NamingContainer)).DataKeys[e.Row.DataItemIndex].Values[0].ToString().Trim() == dt.Rows[i]["prog_ser"].ToString()
                            &&
                            ((GridView)(e.Row.NamingContainer)).DataKeys[e.Row.DataItemIndex].Values[1].ToString().Trim() == dt.Rows[i]["lect_code"].ToString()
                            &&
                            ((GridView)(e.Row.NamingContainer)).DataKeys[e.Row.DataItemIndex].Values[2].ToString().Trim() == dt.Rows[i]["lect_type"].ToString())
                        {
                            ((CheckBox)(e.Row.Cells[int.Parse(dt.Rows[i]["session_id"].ToString())].Controls[1])).Checked = true;
                        }

                    }
                }
            }
        }
        /* =========================================================================== */
<%@ Page EnableViewState="false" ... %>