Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come ottenere il valore della casella di controllo da gridview quando la casella di controllo OnCheckedChanged

usa GridViewRow come segue... Puoi ottenere la riga corrente della casella di controllo che è selezionata usando NamingContainer proprietà come segue...

Modifica :-Modifica il markup e aggiungi Hiddenfield per mantenere il valore per Selezionato come segue...

<asp:TemplateField HeaderText="ใช่">          
            <ItemTemplate>              
                <asp:CheckBox ID="chkSelected" runat="server"  Checked='<%# Eval("Selected").ToString().Equals("True") %>'
                     AutoPostBack="true" OnCheckedChanged="chkSelected_CheckedChanged" CssClass="chkBox" />     
                <asp:HiddenField ID="hiddenField1" Value='<%# Eval("Selected").ToString() %>' runat="server" />    
            </ItemTemplate>       
 </asp:TemplateField> 

Quindi puoi ottenere il campo nascosto come segue e anche il suo valore

protected void chkSelected_CheckedChanged(object sender, EventArgs e)
    {
         GridViewRow row = (GridViewRow)(((CheckBox)sender).NamingContainer);
         HiddenField hdnCheck=(HiddenField)row.Cells[4].FindControl("hiddenField1");
         if (Convert.ToString(hdnCheck.Value != "")
           {
               Response.Write("true");
           }
           else
           {
               Response.Write("false");
           }

         // Edit: You can easily get Checkbox which has been checked, and do your logic
         CheckBox chkSelect=(CheckBox)sender;
         if (chkSelect.Checked)
           {
               Response.Write("true");
           }
           else
           {
               Response.Write("false");
           }    
    }