2012-05-02 10 views
0

複数のRadDockを同時に動的に作成しようとするといくつか問題が発生します。ボタンで複数のRadDockを動的に作成する

私が達成したいのは、ボタンクリックでDockZoneに複数のDockを追加することですが、残りの部分が表示されていないときは最初にDockが適切に作成されて表示されますウェブページをリフレッシュした後に表示されます)、それらは作成されますが、ゾーンの外に浮いています。

一度に1つの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); 

      } 
     } 

、すべてを合計します。 Dockを適切に生成したい。ページをリフレッシュせずにDockZone内に作成することなく、すぐに表示できます。

ご協力いただければ幸いです。

答えて

1

遭遇した行動が後RadDocksを再作成する場合、ページ(行方不明ドック)に制御し、異なるIDまたは/および固有名を設定RadDockのレイアウトをロード/セーブで問題に起因すると思わポストバック(浮動ドック)。

オンラインデモDock/My Portalは、RadDockの状態を動的に作成して永続化する優れた例であり、それが実装するシナリオはあなたのものと似ていますので、今後の開発の参考にすることをお勧めします。ヘルプ記事Dynamically Creating RadDock Controlsは、RadDockを動的に作成するための主なステップを記載しているので、役立ちます。

全体的には、RadDockLayoutのControlsコレクションに新しいRadDockを追加し、ボタンのページに挿入すると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); 

私は主に実装の残りの部分が何であるかにと推測していますので、私が提供するリソースを調べる勧め所望の機能性を達成するためにそれらを利用することが含まれる。

関連する問題