2015-02-11 161 views
0

我在gridview中绑定了一个数据库字段的复选框,该数据库字段存储布尔值,即IsRejected。我试图让它实时,即如果我勾选复选框,那么它应该把数据库中的1或0,我已经尝试过但没有效果。为什么?为什么gridview中的复选框不起作用?

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 

             <ContentTemplate> 
              <div> 
               <asp:GridView ID="grdvwRejectedEmployees" runat="server" AutoGenerateColumns="false" Width="100%" 
              DataKeyNames="EdrID" CssClass="table table-hover table-striped table-bordered" 
              AllowPaging="true" AllowSorting="true"> 

              <Columns> 
              <asp:BoundField DataField="EdrID" HeaderText="Edr ID" /> 
              <asp:BoundField DataField="EmployerName" HeaderText="Employer" /> 
              <asp:BoundField DataField="BranchName" HeaderText="Branch" /> 
              <asp:BoundField DataField="EmployeeUniqueID" HeaderText="EmployeeUniqueID" /> 
              <asp:BoundField DataField="EmployeeName" HeaderText="Employee Name" /> 
              <asp:BoundField DataField="PayStartDate" HeaderText="Pay Start Date" /> 
              <asp:BoundField DataField="PayEndDate" HeaderText="Pay End Date" /> 
              <asp:TemplateField HeaderStyle-CssClass="visible-desktop" ItemStyle-CssClass="visible-desktop"> 
               <ItemTemplate> 
                <asp:CheckBox ID="chkBoxIsRejection" runat="server" Text='<%# Bind("IsRejected") %>' /> 
               </ItemTemplate> 
              </asp:TemplateField> 
              <%--<asp:BoundField DataField="IsRejected" HeaderText="Is Rejected" />--%> 
              </Columns> 

             </asp:GridView> 
              </div> 
             </ContentTemplate> 

            </asp:UpdatePanel> 

的.cs

if (!IsPostBack) 
     { 

      if (Session["UserCredential"] != null) 
      { 
       ClsSystemUser user = (ClsSystemUser)Session["UserCredential"]; 
       ClsSystemUser obj = new ClsSystemUser(); 
       obj = obj.GetOrganizationName(user.Type_ID, user.OfficeID, user.SystemUserID); 

       int usertypeid = user.Type_ID; 


       if (usertypeid == 3) 
       { 
        //UserTypeID.Text = "Branch"; 

        ClsRejectedFiles RejFiles = new ClsRejectedFiles(); 
        grdvwRejectedEmployees.DataSource = RejFiles.GetRejectedFiles("30411098037111", 3, 1); 
        grdvwRejectedEmployees.DataBind(); 

       } 

一样,如果我打勾或取消勾选复选框,然后它不会影响数据库,即价值,如果我签的话,我应该把1数据库IsRejected列或0如果我取消选中

+1

选中复选框的'Checked'财产与您的数据字段代码。您正在设置Text属性。 – 2015-02-11 07:17:35

回答

2

您正在设置复选框的Text属性与数据字段值尝试设置Checked属性,以便它将设置复选框值。

<asp:CheckBox 
     ID="chkBoxIsRejection" runat="server" HeaderText="IsRejection" 
     Checked='<%#Convert.ToBoolean(Eval("IsRejected")) %>'/> 

UPDATE

欧普想更新chagned上复选框检查数据库。为此,您需要添加事件以告知页面如何在复选框选中时发生反应

您需要添加事件CheckedChangedYou can read it here.

 <asp:CheckBox 
     ID="chkBoxIsRejection" runat="server" HeaderText="IsRejection" 
     Checked='<%#Convert.ToBoolean(Eval("IsRejected")) %>' 
     AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged"/> 

然后在后面

 protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
    { 
      // write code to save the changes to the database. 
    } 
+0

不起作用,同样的问题,但至少它代表真正的价值,但不实时工作 – 2015-02-11 07:28:40

+0

你的意思是什么,实时不工作? – 2015-02-11 07:29:18

+0

如果我勾选或取消选中复选框,那么它不会影响数据库中的值,即如果我检查那么我应该把1放在数据库IsRejected列或0如果我取消选中 – 2015-02-11 07:39:09

相关问题