1

現在、グリッドに変更がある場合にのみ、onchangeをonbeforeunloadまたはconfirmboxにバインドするjs関数があります。

確認またはonbeforeunloadがトリガーされないように、フッターページングアンカーを選択しようとしています。ユーザーは、グリッドに変更があるかどうかに関係なく、数値ページングを選択する必要があります。

アンカーにIDまたはクラス名がないため、アクセスに問題があります。

前もって感謝します。

RadGridのプロパティ:

             <telerik:RadGrid 
             runat="server" 
             ID="DataGridFooItems" 
             AllowSorting="true" 
             AutoGenerateColumns="false" 
             EnableViewState="True" 
             GridLines="Vertical" 
             AllowPaging="True" 
             PagerStyle-Mode="NumericPages">

             <MasterTableView 
             AllowPaging="true" 
             DataKeyNames="foopersonID,fooItemID" 
             AllowAutomaticDeletes="true" 
             CommandItemDisplay="None" 
             NoMasterRecordsText="" >

これは、.aspxが以下で生成するものです。

    <TFOOT>
<TR class=rgPager>
<TD colSpan=20>
<TABLE style="WIDTH: 100%" border=0 cellSpacing=0>
<TBODY>
<TR>
<TD class="rgPagerCell NumericPages">
<DIV class="rgWrap rgNumPart">
<A class=rgCurrentPage onclick="returnfalse;"href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl02','')"><SPAN>1</SPAN></A><A 
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl04','')"><SPAN>2</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl06','')"><SPAN>3</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl08','')"><SPAN>4</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl10','')"><SPAN>5</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl12','')"><SPAN>6</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl14','')"><SPAN>7</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl16','')"><SPAN>8</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl18','')"><SPAN>9</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl20','')"><SPAN>10</SPAN></A><A
href="javascript:__doPostBack('ctl00$ph$FOO$rgItems$ctl00$ctl03$ctl01$ctl22','')"><SPAN>...</SPAN></A> 
</DIV></TD></TR></TBODY></TABLE></TD></TR></TFOOT>

更新:回答!

それを見つけた!同様のTelerikソリューションの調査と調整を行いました。

私はこれを作成しました:

  1. クラスを選択する変数を宣言しました。
  2. 次に、オブジェクトを検索してすべてのアンカーを探しました。
  3. その後、現在のページにない場合はループスルーアンカーを使用しました(ユーザーはすでにページにいるため、クリックイベントは発生しないはずです)。&&アンカーのhrefが__doPostbackの場合。
  4. 次に、属性onclickイベントを確認に設定します。このステップは__doPostbackをラップしました。

ソース:http ://www.telerik.com/community/forums/aspnet-ajax/grid/radgrid-paging---pageindexchanged-event-issue.aspx

function preventPromptOnFooter() {

            var pagerCell = $('[class="rgPagerCell NumericPages"]')
            var anchors = $(pagerCell).find('a');
            for (var i = 0; i < anchors.length; i++) {
                if (anchors[i].className != "rgCurrentPage" && anchors[i].href.indexOf("javascript:__doPostBack") > -1) {
                    var clickScript = anchors[i].attributes["onclick"].value;
                    anchors[i].onclick = disableOnbeforeUnloadForFooter;
                }
            }



            function disableOnbeforeUnloadForFooter() {
                window.onbeforeunload = null;
            }
        }
4

2 に答える 2

0

あなたは試すことができます:

var pageLinks = document.querySelectorAll(".rgWrap.rgNumPart a");

Chrome、Firefox 3.5以降、ie8以降、Opera 10、Safari3.2以降で動作します。古いブラウザをサポートする必要がある場合は、クラス名で親divを取得してから、getElementsByTagName('A')を使用する組み合わせを試すことができます。または、 jQueryなどのライブラリを使用して、高度なCSSセレクタークロスブラウザーを実装します。

于 2013-01-10T21:52:41.677 に答える
0

それを見つけた!同様のTelerikソリューションの調査と調整を行いました。

私はこれを作成しました:

  1. クラスを選択する変数を宣言しました。
  2. 次に、オブジェクトを検索してすべてのアンカーを探しました。アンカー
  3. その後、現在のページにない場合はループスルーアンカーを使用しました(ユーザーはすでにページにいるため、クリックイベントは発生しないはずです)。&&アンカーのhrefが__doPostbackの場合。
    1. 手順(3.)が真の場合、属性onclickイベントを確認に設定します。このステップは__doPostbackをラップしました。

ソース: http ://www.telerik.com/community/forums/aspnet-ajax/grid/radgrid-paging---pageindexchanged-event-issue.aspx

function preventPromptOnFooter() {

            var pagerCell = $('[class="rgPagerCell NumericPages"]')
            var anchors = $(pagerCell).find('a');
            for (var i = 0; i < anchors.length; i++) {
                if (anchors[i].className != "rgCurrentPage" && anchors[i].href.indexOf("javascript:__doPostBack") > -1) {
                    var clickScript = anchors[i].attributes["onclick"].value;
                    anchors[i].onclick = disableOnbeforeUnloadForFooter;
                }
            }



            function disableOnbeforeUnloadForFooter() {
                window.onbeforeunload = null;
            }
        }
于 2013-01-15T18:39:53.070 に答える