Asp.net 在单击按钮时动态创建多个RadDock

Asp.net 在单击按钮时动态创建多个RadDock,asp.net,c#-4.0,telerik,Asp.net,C# 4.0,Telerik,我在尝试同时动态创建多个RadDock时遇到一些问题 我想要实现的是,点击按钮就可以将多个Dock添加到DockZone,但我得到的唯一结果是第一个Dock被正确创建并显示,而其余的Dock没有显示(它们在我刷新网页后显示),它们被创建但在区域外浮动 我在一次创建一个Dock时也有类似的场景,它就像一个符咒 代码如下: protected void rbAddTickets_Click(object sender, EventArgs e) { var t

我在尝试同时动态创建多个RadDock时遇到一些问题

我想要实现的是,点击按钮就可以将多个Dock添加到DockZone,但我得到的唯一结果是第一个Dock被正确创建并显示,而其余的Dock没有显示(它们在我刷新网页后显示),它们被创建但在区域外浮动

我在一次创建一个Dock时也有类似的场景,它就像一个符咒

代码如下:

protected void rbAddTickets_Click(object sender, EventArgs e)
        {
            var ticketList = (from t in db.Ticket
                              where t.idManager == idManager && t.Zatvoren == false || t.idManager == null && t.Zatvoren == false
                              select t).ToList();

            var memoTicketList = from t in ticketList
                                 where t.Memo == null || t.Memo == true
                                 orderby t.Firma.Naziv, t.idNadredeniTicket, t.RedniBroj, t.Opis
                                 select t;

            foreach (var ticket in memoTicketList)
            {
                RadDock dock = new RadDock();
                dock.UniqueName = ticket.idTicket.ToString();
                dock.ID = string.Format("RadDock{0}", dock.UniqueName);
                dock.Title = ticket.idNadredeniTicket + "-" + ticket.RedniBroj + " (" + ticket.Firma.Naziv + ")";
                dock.Text = ticket.Opis;
                dock.DockMode = DockMode.Docked;
                //dock.Index = Convert.ToInt32(Session["MinIndex"]) - 1;


                dock.Commands.Add(new DockCloseCommand());
                dock.Commands.Add(new DockExpandCollapseCommand());
                dock.Command += new DockCommandEventHandler(DockCommands);

                //ticket.Memo = true;
                //db.SaveChanges(); OMOGUĆI KASNIJE

                UpdatePanel1.ContentTemplateContainer.Controls.Add(dock);

                ScriptManager.RegisterStartupScript(
                dock,
                this.GetType(),
                "AddDock",
                string.Format(@"function _addDock() {{
    Sys.Application.remove_load(_addDock);
    $find('{1}').dock($find('{0}'));
    $find('{0}').doPostBack('DockPositionChanged');
}};
Sys.Application.add_load(_addDock);", dock.ClientID, rdzIncidenti.ClientID),
                true);
                CreateSaveStateTrigger(dock);

            }
        }
总而言之。我想适当地生成码头;立即显示它们,无需刷新页面并在DockZone内创建它们


任何帮助都将不胜感激。

遇到的行为似乎是由于在回发后重新创建RadDock(浮动Dock)时,在页面上保存/加载RadDock控件的布局(丢失的Dock)和设置不同的ID或/和UniqueName时出现问题造成的

在线演示是动态创建和保持RadDocks状态的一个很好的示例,它实现的场景与您的类似,因此我建议您将其用作进一步开发的参考。帮助文章也很有用,因为它列出了动态创建RadDock的主要步骤

总的来说,您提供的代码似乎是正确的,尽管我建议在RadDockLayout的控件集合中添加新的RadDock,并在单击按钮插入页面时,通过Dock方法将它们停靠在特定的RadDockZone中。这是通过以下代码行在链接演示中的按钮单击事件处理程序中实现的:

    RadDockZone dz = (RadDockZone)FindControl(DropDownZone.SelectedItem.Text);
    //adding the dock to the docklayout and then docking it to the zone to avoid ViewState issues on subsequent postback
    RadDockLayout1.Controls.Add(dock);
    dock.Dock(dz);
由于我主要猜测您的实现的其余部分是什么,因此我建议检查提供的资源并利用它们以实现所需的功能