0

Qデータグリッドの検索結果をスクロール可能にする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>

チェックボックスリストをクリックすると、関数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

グリッドが updatePanel に含まれているため、jQuery document.Ready の関数は 1 回だけ呼び出されます。UpdatePanels は、pageLoad イベントをトリガーする部分的なポストバックを引き起こします

コードを置き換えてみてください

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

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