回调功能?

时间:2010-10-14 18:40:49

标签: c# javascript asp.net sharepoint

我需要在我的代码中回调Javascript函数,但不要触发。我正在提供我正在做的事情的详细信息?。

  1. 我在调用javascript函数的页面中有输入按钮。在那里,我正在加载另一个ProfilePic.aspx页面。 ProfilePic.aspx有FileUpload,OK和cancle按钮

    <input type=button value="Change Image" onclick="javascript:SelectUserImage()" />
    
  2. Javascript函数

    <script type="text/javascript">
    function SelectUserImageCallback(ret) {
        var imgId = 'ctl00_PlaceHolderMain_prof_imgUser';
        var clearId = 'ctl00_PlaceHolderMain_prof_hidImageURL';
        if (ret) {
            if (ret == '__RESET__') {
                document.getElementById(imgId).src = '\u002f_layouts\u002fimages\u002fno_pic.gif';
                document.getElementById('ctl00_PlaceHolderMain_prof_hidImageURL').value = '';
                document.getElementById(clearId).style.display = 'none';
            }
            else {
                document.getElementById(imgId).onload = 'imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');';
                document.getElementById(imgId).src = ret;
                document.getElementById('ctl00_PlaceHolderMain_prof_hidImageURL').value = ret;
                setTimeout('imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');', 1);
                setTimeout('imgResizeMax(\'ctl00_PlaceHolderMain_prof_imgUser\', 100);imgResizeTbl(\'ctl00_PlaceHolderMain_prof_imgUser\');', 100);
                document.getElementById(clearId).style.display = '';
            }
        }
    }
    function SelectUserImage() {
        var href = '\u002f_layouts\u002fProfilePic.aspx';
    
    
    
    var features = 'resizable: yes; status: no; scroll: no; help: no; center: yes; dialogWidth: 460px; dialogHeight: 140px; width:460;height:240;menubar:no;directories:no;location:no;';
    commonShowModalDialog(href, features, SelectUserImageCallback, null);
    
    }

  3. 在ProfilePic.aspx页面中,一旦用户点击OK buttong。我用一些逻辑上传他的照片然后我用javascript关闭窗口

  4. protected void btnOK_Click(Object sender,EventArgs e) {

    var features = 'resizable: yes; status: no; scroll: no; help: no; center: yes; dialogWidth: 460px; dialogHeight: 140px; width:460;height:240;menubar:no;directories:no;location:no;';
    commonShowModalDialog(href, features, SelectUserImageCallback, null);
    

    try { // My logic Here Debug.WriteLine("Shared Pictures Save Ends: " + DateTime.Now); Response.Write ("<script language =javascript>close();</script>"); Response.End(); } catch (Exception exception) { LogMessage(exception.Message, EventLogEntryType.Error); if (exception.Message.ToLower().Contains("blocked")) errorDisplay.Text = "* This type of file has been blocked by the administrator, please try a different file."; else { errorDisplay.Text = exception.Message; } } } 我可以关闭窗口但是,我需要调用回调函数`SelectUserImageCallback'不激活。完成OK按钮部件执行后,我需要调用此方法。

1 个答案:

答案 0 :(得分:0)

你在回调执行之前关闭了窗口吗?我以前做过那个。作为实验,请尝试注释掉关闭窗口的代码。

您可能需要重新构建代码,以便回调函数在完成任何操作时关闭窗口。

更新:抱歉,我误解了这个问题。有很多代码,我没有全部阅读。我认为回调是在对话框页面中,但它看起来像是在主页面中。我不熟悉commonShowModalDialog(),但看起来它可能与SharePoint有关。你有关于那种方法的任何文件吗?我发现this discussion使得它看起来像是一种从对话框中返回值的特殊方法。可能是因为您没有以正确的方式关闭窗口而未调用回调。 (这是我的总体猜测。)

祝你好运。