jeudi 12 juillet 2018

Not able to get checkbox event on button click in Gridview

I have a Gridview which contains first column as "checkbox". I need to add "Select All" and "Individual Row Select" functionality and selected row I'd needs to be captured in c# code but I am not able to get the event fired post checkbox selection and "Submit" button click. Below is my Grid Code

  <asp:DataGrid ID="dgRegions" runat="server" CssClass="datagrid" AutoGenerateColumns="False" Width="100%" CellPadding="2" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" AllowSorting="True" OnItemDataBound="dgRegions_ItemDataBound" onrowdatabound="dgRegions_RowDataBound">
                  <Columns>
                  <asp:TemplateColumn>
                  <ItemTemplate>
                    <asp:CheckBox ID="chkheader" runat="server" Checked= "false" onclick="javascript:SelectheaderCheckboxes(this)"/>
                  </ItemTemplate>
                      <itemtemplate>
                    <asp:CheckBox ID="chkchild" runat="server"/>
                    </itemtemplate>
                  </asp:TemplateColumn>
                  <asp:TemplateColumn HeaderText="REQUEST NUMBER">
                        <ItemStyle VerticalAlign="Middle"></ItemStyle>
                        <ItemTemplate>
                            <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.REQUEST_DETAIL_ID") %>' ID="REQUEST_DETAIL_ID">
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateColumn>

I have a button on click of which I need to get the value of REQUEST_DETAIL_ID. Below is my javascript code

<asp:Content ID="cDefaultContent" ContentPlaceHolderID="cpDefaultContentPlaceHolder" runat="server">

<script type="text/javascript">
    // Select/Deselect checkboxes based on header checkbox
    function SelectheaderCheckboxes(headerchk) {
        debugger
        var gvcheck = document.getElementById('dgRegions');
        var i;
        //Condition to check header checkbox selected or not if that is true checked all checkboxes
        if (headerchk.checked) {
            for (i = 0; i < gvcheck.rows.length; i++) {
                var inputs = gvcheck.rows[i].getElementsByTagName('input');
                inputs[0].checked = true;
            }
        }
            //if condition fails uncheck all checkboxes in gridview
        else {
            for (i = 0; i < gvcheck.rows.length; i++) {
                var inputs = gvcheck.rows[i].getElementsByTagName('input');
                inputs[0].checked = false;
            }
        }
    }
    //function to check header checkbox based on child checkboxes condition
    function Selectchildcheckboxes(header) {
        var ck = header;
        var count = 0;
        var gvcheck = document.getElementById('dgRegions');
        var headerchk = document.getElementById(header);
        var rowcount = gvcheck.rows.length;
        //By using this for loop we will count how many checkboxes has checked
        for (i = 1; i < gvcheck.rows.length; i++) {
            var inputs = gvcheck.rows[i].getElementsByTagName('input');
            if (inputs[0].checked) {
                count++;
            }
        }
        //Condition to check all the checkboxes selected or not
        if (count == rowcount - 1) {
            headerchk.checked = true;
        }
        else {
            headerchk.checked = false;
        }
    }
</script>

and here is my C#

  protected void dgRegions_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox headerchk = (CheckBox)dgRegions.FindControl("chkheader");
            CheckBox childchk = (CheckBox)e.Row.FindControl("chkchild");
            childchk.Attributes.Add("onclick", "javascript:Selectchildcheckboxes('" + headerchk.ClientID + "')");
        }
    }

What's wrong I am doing? Please help




Aucun commentaire:

Enregistrer un commentaire