2012-05-02 64 views
0

我在尝试同时动态创建多个RadDocks时遇到了一些问题。在按钮上动态创建多个RadDocks点击

我想实现的是在按钮单击时将多个码头添加到DockZone,但我唯一得到的是首先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中创建它们。

任何帮助,将不胜感激。

回答

1

遇到的行为似乎是由储蓄问题引起/加载RadDock的页面(缺少的码头)上的布局控制并设置不同的ID或/和UniqueName,经过重新创建RadDocks时回发(浮船坞)。

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

总的来说,你提供的代码看起来是正确的,虽然我会建议在RadDockLayout的Controls集合中添加新的RadDocks,并通过Dock方法将它们对接到特定的RadDockZone中单击。这是在ButtonAddDock_Click事件处理程序通过下面的代码行实施了链接演示:

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); 

因为我主要是在猜测你的执行的其余部分,我会建议检查所提供的资源并利用它们来实现所需的功能。

相关问题