2012-05-02 60 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); 

因爲我主要是在猜測你的執行的其餘部分,我會建議檢查所提供的資源並利用它們來實現所需的功能。