0

QI 有一个 jQuery 函数,它使我的数据网格搜索结果可滚动。
但是,如果我更新面板,滚动条就会消失,结果只会填满整个页面。是因为它没有再次调用该函数吗?这是我当前的代码。

jQuery

<script type="text/javascript">

        $(document).ready(function scroll() {
            $('#<%=gvMapping.ClientID%>').Scrollable({ ScrollHeight: 370 });
        }
        )
</script>
<script type="text/javascript">
    function getGL(){
    var button = document.getElementById("<%= btnGetGLDept.ClientID %>");
    button.click();
}
</script>

HTML

 <%--Mapping Search Bar --%>
    <div class="searchrev1">
    <asp:TextBox ID="mpSearch" class="txtbox" runat="server" text="Please start entering Department Name or Number to search"
        onfocus="if(this.value==this.defaultValue) {this.value='';$(this).css('color','#3B3B3B');}"  
        onblur="if(this.value=='') {this.value=this.defaultValue;$(this).css('color','rgb(173,180,195)');}" Width="400px"/>
    <asp:Button  ID="mapsearch" text="Search" runat="server" 
        onclick="getGLDepts" />
    <asp:CheckBoxList ID="mpcbl" class="cbl" runat="server" DataSourceID="Rollup" 
            DataTextField="COA_SYSTEM" DataValueField="COA_SYSTEM" ondatabound="chkFormat" OnClick="javascript:scroll;getGL();"></asp:CheckBoxList>
        <asp:SqlDataSource ID="Rollup" runat="server" 
            ConnectionString="<%$ ConnectionStrings:Rollup2ConnectionString %>" 
            SelectCommand="SELECT DISTINCT [COA_SYSTEM] FROM [T_ROLLUP_GL_EXCEPT]">
        </asp:SqlDataSource>
    </div>
    <%--Mapping Graph --%>
    <div class="botcontent">
    <asp:Label ID="lblGLDeptData" runat="server"></asp:Label>
    </div>
    <asp:UpdatePanel runat="server">
        <ContentTemplate>
            <div class="topcontent">
                <asp:GridView ID="gvMapping" runat="server" GridLines="none" AutoGenerateColumns="false">
                <HeaderStyle CssClass="GVFixedHeader" />
                <Columns>...</Columns>
                </asp:GridView>
                <asp:Button ID="btnGetGLDept" runat="server" OnClick="getGLDepts" CssClass="invisible" />
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

单击时,我让 Checkboxlist 调用函数 getGL() 。然后调用 jquery 函数,该函数调用按钮单击来调用 c# 代码。这是不发生可滚动的时候。

4

2 回答 2

1

需要添加此 javascript,以便在调用更新面板时

var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(EndRequest);

    function EndRequest(sender, args) {
       $('#<%=gvMapping.ClientID%>').Scrollable({ ScrollHeight: 370 });
    }

或者用这个替换你的document.ready

Sys.Application.add_load(initSomething);
function initSomething()
{
    $('#<%=gvMapping.ClientID%>').Scrollable({ ScrollHeight: 370 });
  // will execute on load plus on every UpdatePanel postback
}
于 2012-08-06T22:51:18.617 回答
0

您的 jQuery document.Ready 函数只会被调用一次,因为您的网格包含在 updatePanel 中。UpdatePanels 导致部分回发,这将触发 pageLoad 事件

尝试将您的代码替换为

$(document).ready(function scroll() {
  $('#<%=gvMapping.ClientID%>').Scrollable({ ScrollHeight: 370 });
});

function pageLoad() {
  $('#<%=gvMapping.ClientID%>').Scrollable({ ScrollHeight: 370 });
}
于 2013-08-06T16:05:00.930 回答