0

updatepanel 内でドロップダウンを使用していますが、ドロップダウンから値を選択するとページが更新されるという問題があります。ScripPathをasp:scriptmanagerに追加するまで、最初は更新パネルが正常に機能していました。

現在でも、scriptmanager から ScriptPath を削除しても、ページは更新されず、動作は期待どおりです。

ScriptPath を追加する理由は、ドロップダウンで値が変更されるたびに abc.js を実行したいからです。予想どおり、ドロップダウンで選択した値ごとに abc.js が実行されますが、ページを更新したくありません。

では、 scriptpath を asp:scriptmanager に追加した後でも、ページの更新を停止するにはどうすればよいですか?

以下は私の .aspx ソースです。

<asp:ScriptManager ScriptPath="abc.js"  runat="server"></asp:ScriptManager> 

 <asp:UpdatePanel ID="UP_Social_Ddl" runat="server">
                        <ContentTemplate>
                            <div class="styled-select">
                                <asp:Label runat="server" ID="Label2" Font-Size="Small" ToolTip="Social : 'ON' will post your activity on this page to your FaceBook Wall." Text="Social :" Style="vertical-align: top;" />
                                <asp:DropDownList ID="ddlSocialSwitch" runat="server" AutoPostBack="true" Style="vertical-align: top;" ToolTip="Social : ON will post your activity on this page to your FaceBook Wall." OnSelectedIndexChanged="ddlSocialSwitch_SelectedIndexChanged">
                                </asp:DropDownList>
                                &nbsp;<a valign="bottom" onclick="logout_fb" href="#" id="auth-logoutlink"><img valign="bottom" src="facebookLogOutButton.png"/></a>
                                <asp:Label ID="lbl" Visible="false" runat="server"></asp:Label>
                            </div>
                        </ContentTemplate>
                    </asp:UpdatePanel>

JS

//Get values from hidden field
var appid = document.getElementById("appid").value;
var message = document.getElementById("message").value;
var link = document.getElementById("link").value;
var name = document.getElementById("name").value;
var picture = document.getElementById("picture").value;
var description = document.getElementById("description").value;

var Authenticated = "";
// Load the SDK Asynchronously
(function (d) {
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) { return; }
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
} (document));

//Init the SDK upon load
window.fbAsyncInit = function () {
    FB.init({
        appId: appid, // App ID
        channelUrl: '//' + window.location.hostname + '/channel', // Path to your Channel File
        status: true, // check login status
        cookie: true, // enable cookies to allow the server to access the session
        xfbml: true  // parse XFBML 
    });
    // listen for and handle auth.statusChange events
    FB.Event.subscribe('auth.statusChange', function (response) {
        if (response.authResponse) {
            // user has auth'd your app and is logged into Facebook
            var uid = "http://graph.facebook.com/" + response.authResponse.userID + "/picture";
            FB.api('/me', function (me) {
                document.getElementById('auth-displayname').innerHTML = me.name;
                document.getElementById('profileImg').src = uid;
            })
            document.getElementById('auth-loggedout').style.display = 'none';
            document.getElementById('auth-loggedin').style.display = 'block';

            var e = document.getElementById("FB_ddlSocialSwitch");
            var Social_switch = e.options[e.selectedIndex].value;

            if (Social_switch == "on") {
                alert(Social_switch);
            } 

            //_______________________________________________Post to FB_______________________________________________________
            //    var opts = {
            //        message: 'A good reference for APIs',
            //        link: window.location.href,
            //        name: 'API Reference',
            //        picture: 'http://www.demo.lookmywebpage.com/publish-on-facebook-wall/Google-Twitter-Facebook.jpg',
            //        description: 'Demo Facebook Post'
            //    };
            //  
            //    FB.api('/me/feed', 'post', opts, function (response) {
            //        if (!response || response.error) {
            //            alert('Posting error occured');
            //        }
            //        else {
            //            alert('Success - Post ID: ' + response.id);
            //        }
            //    });
            //________________________________________________________________________________________________________________

        } else {
            // user has not auth'd your app, or is not logged into Facebook
            document.getElementById('auth-loggedout').style.display = 'block';
            document.getElementById('auth-loggedin').style.display = 'none';
        }

    });
    $("#auth-logoutlink").click(function () {
        FB.logout(function () {
            window.location.reload();
        });
    });
} 

悲しいことに、あなたが投稿した画像を見ることができないため、診断が難しくなっています。

熟考すべき点がいくつかあります... Lotus Notes は、何年も経った後、ルックアップを行うときに 64k エラーが発生して、あなたを悲しませることがあります。@dblookup または @dbcolumn からのビューからアイテムのリストを検索している場合、この制限に達すると通知なしでフォールオーバーします。32k または 64k の両方で他にもいくつかのデータ制限があり、これがあなたが当たったと思われるものです。コピーを取り、古いデータの一部を削除して、コピーの問題が修正されるかどうかを確認します。

2 つ目は、データベースの破損です。非常にまれに、データベースが破損することがあります。データベースのコピーを取り、「ロードの修正」を実行します。管理者のヘルプを参照するか、http: //www-12.lotus.com/ldd/doc/domino_notes/7.0/help7_admin.nsf/Links/H_RUNNING_FIXUP_USING_THE_SERVER_STATUS_TAB_7476_STEPS を参照してください。

いよいよデスクチェックタイム。データベースのコピーを取得し、デバッグ メッセージを追加します。

Print "Info: View returned " + cstr(view.entries) +  entries"

破損が発生している理由がわかるまで、プロセスを詳しく調べてください。

HTH

4

3 に答える 3

0

あなたはこれを正しく行っていません。ページ上で js スクリプトを静的に保持します。

<asp:ScriptManager ID="ScriptManager1" 
                                 EnablePartialRendering="True"
                                 runat="server">
  <Scripts>
   <asp:ScriptReference Path="~/abc.js" />
  </Scripts>
</asp:ScriptManager>

JavaScript でonChangeイベントをリッスンします。
jQuery はこれを簡単にします。

$("#<%=ddlSocialSwitch.ClientID%>").change(function(e) {
      //handle the change
});

OnSelectedIndexChangedはサーバー側の関数です。js を実行するには、onchange イベントをリッスンする必要があります。

于 2012-11-08T05:56:37.433 に答える
0

「ScriptPath」を使用しないことを検討してください。代わりに、個々の ScriptReference ごとにPathプロパティを設定します。

ScriptPath :廃止されました。ASP.NET Ajax およびカスタム スクリプト ファイルへのパスを構築するために使用される場所のルート パスを取得または設定します。

例えば。

  <asp:ScriptManager ID="ScriptManager1" 
                                 EnablePartialRendering="True"
                                 runat="server">
             <Scripts>
                <asp:ScriptReference Path="~/abc.js" />
             </Scripts>
            </asp:ScriptManager>
于 2012-11-08T03:38:35.287 に答える