You must Sign In to post a response.
  • Category: JavaScript

    Problem in updating Gridview While using Static header and Footer

    To make header and footer of gridview static I have used the following script...

    <script language="javascript" type="text/javascript">
    function MakeStaticHeader(gridId, height, width, headerHeight, isFooter) {
    var tbl = document.getElementById(gridId);
    if (tbl) {
    var DivHR = document.getElementById('DivHeaderRow');
    var DivMC = document.getElementById('DivMainContent');
    var DivFR = document.getElementById('DivFooterRow');

    //*** Set divheaderRow Properties ****
    DivHR.style.height = headerHeight + 'px';
    DivHR.style.width = (parseInt(width) - 16) + 'px';
    DivHR.style.position = 'relative';
    DivHR.style.top = '0px';
    DivHR.style.zIndex = '10';
    DivHR.style.verticalAlign = 'top';

    //*** Set divMainContent Properties ****
    DivMC.style.width = width + 'px';
    DivMC.style.height = height + 'px';
    DivMC.style.position = 'relative';
    DivMC.style.top = -headerHeight + 'px';
    DivMC.style.zIndex = '1';

    //*** Set divFooterRow Properties ****
    DivFR.style.width = (parseInt(width) - 1) + 'px';
    //DivFR.style.height = 100 + 'px';
    DivFR.style.position = 'relative';
    DivFR.style.zIndex = '10';
    DivFR.style.top = -headerHeight + 'px';
    DivFR.style.verticalAlign = 'top';
    DivFR.style.paddingtop = '2px';

    if (isFooter) {
    var tblfr = tbl.cloneNode(true);
    tblfr.removeChild(tblfr.getElementsByTagName('tbody')[0]);
    var tblBody = document.createElement('tbody');
    tblfr.style.width = '100%';
    tblfr.cellSpacing = "0";
    tblfr.style.height = '40%';
    tblfr.border = "0px";
    tblfr.rules = "none";
    //*****In the case of Footer Row *******
    tblBody.appendChild(tbl.rows[tbl.rows.length - 1]);
    tblfr.appendChild(tblBody);
    DivFR.appendChild(tblfr);
    }
    //****Copy Header in divHeaderRow****
    DivHR.appendChild(tbl.cloneNode(true));
    }
    }

    function OnScrollDiv(Scrollablediv) {
    document.getElementById('DivHeaderRow').scrollLeft = Scrollablediv.scrollLeft;
    document.getElementById('DivFooterRow').scrollLeft = Scrollablediv.scrollLeft;
    }

    </script>

    and called this function in page_load of code-behind like...

    ScriptManager.RegisterStartupScript(Page, this.GetType(), "Key", "<script>MakeStaticHeader('" + grdMetadata.ClientID + "', 400, 1200 , 40 ,true); </script>", false);

    Everything works fine but, While updating the same value is getting twice with comma in between

    for eg: If I give ABS , in Row_Updating Event its become ABS,ABS... earlier it's working fine as I have not applied header and footer.. after using this only am getting this behavior... am working on this from morning but in vain... If any one used or experienced the same behavior and if got any work around help me....
  • #751980
    Hi,

    Use below code to make your header fixed and let me know whether you are able to proceed as normal without any issues.

    First keep your gridview inside a div tag like below,


    <div style="OVERFLOW: auto; WIDTH: 800px; HEIGHT: 240px">
    <asp:datagrid id="GridView1" runat="server"....

    <HeaderStyle CssClass="FixedHeader" />


    </div>


    Then use below CSS to make your header of the gridview fixed,


    <style type="text/css">
    .FixedHeader
    {
    font-weight:bold;
    position:absolute;
    background-color:White;
    }
    </style>



    Let me know if you have any doubt on above code.


    Regards,
    Asheej T K

  • #751981
    Try to clear the value first before assigning value to the row or column values.

    Check that if the values already exist.

    Thanks & Regards
    Anil Kumar Pandey
    Microsoft MVP, DNS MVM


  • Sign In to post your comments