Ektron Multiview不切换视图

时间:2014-07-02 13:23:51

标签: c# asp.net events widget ektron

完全陷入困境,我在ektron中创建了一个小工具,2天前工作正常,突然间所有事件都无缘无故地停止工作。我一直试图追查罪魁祸首无济于事。

我的aspx文件是一个基本的多视图,有两个视图,一个用于编辑设置,另一个用于内容。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ContentPlus.ascx.cs" Inherits="widget_ContentPlus" Debug="true" %>

<asp:multiview ID="contentPlusWidget" runat="server">   
    <asp:View ID="vEdit" runat="server">
         <table>
        <tr>
            <td class="label">Content: </td>
            <td><asp:DropDownList ID="ddlContentType" runat="server" class='displayType'></asp:DropDownList></td>
        </tr>
        <tr>
            <td><asp:Button ID="btnSave" runat="server" Text="Save" /></td> 
            <td><asp:Button ID="btnCancel" runat="server" Text="Cancel" /></td>
        </tr> 
    </table> 
    </asp:View> 

    <asp:View ID="vContent" runat="server">   
        <!-- Content Code -->
    </asp:View>

</asp:multiview>

然后在contentplus.ascx.cs文件中,我有我的页面事件,然后是我的btn事件

protected void Page_Init() {
    _host = Ektron.Cms.Widget.WidgetHost.GetHost(this);
    _host.Title = "My Widget";
    _host.Edit += new EditDelegate(EditEvent); 
    _host.ExpandOptions = Expandable.ExpandOnEdit;

    btnSave.Click += new EventHandler(btnSave_Click);
    btnCancel.Click += new EventHandler(btnCancel_Click);       
}

protected void Page_Load() {
    if(!this.IsPostBack) 
        ChangeViewTo(vContent);
}

protected void btnSave_Click(object sender, EventArgs e) {
    Javascript.Alert("SAVED!");
    SaveSelectedIndex();
    ChangeViewTo(vContent);
}

protected void btnCancel_Click(object sender, EventArgs e) {
    Javascript.Alert("CANCEL!");
    ChangeViewTo(vContent);
}    

public void EditEvent(string settings) {
    Javascript.Alert("EDIT!");
    ChangeViewTo(vEdit);
    PopulateDropDownBoxWithAvailableContent();        
}   

void ChangeViewTo(View view) {
    Javascript.ConsoleLog(view.ID);
    contentPlusWidget.SetActiveView(view);

    if(view.Equals(vEdit))
        PopulateDropDownBoxWithAvailableContent();
}

有些东西不起作用,首先点击设置按钮,屏幕变为灰色并带有旋转图标,当它返回时没有发生任何事情。这通常发生在_host.Edit += new EditDelegate(EditEvent);委托尚未设置的情况下,但正如您所看到的那样。其次,当我将设置视图设置为默认值时,按下保存或取消按钮,您将获得旋转对话框,然后什么都没有。永远不会触发事件代码。但是你可以看到我在Page_Init()

中分配了事件委托

我觉得我错过了一些明显的东西,但我已经被困了一天。有什么想法吗?

编辑:更改标题以反映当前对问题的理解

1 个答案:

答案 0 :(得分:0)

确定找到了解决方案并将其发布给其他任何人。

当Ektron执行ajax回发时,它希望响应的格式为

1|#||4|6696|updatePanel|ctl00_cphBillBoard_dzLeft_updatepanel|
        <div id="ctl00_cphBillBoard_dzLeft_dzcontainer" class="dropzone PBClear" EditMode="true">....<the rest of your content>.....

开头的那些管道非常重要,在我的代码中的几个地方我动态地在浏览器内部注入javascript进行调试,我还使用Response.Write()将一些错误消息记录到屏幕上; 这些都是在我的管道之前注入的,所以它搞砸了ajax请求。当我意识到这一切并删除了我的所有日​​志记录时,一切正常!