2012-01-11 12 views
0

私はDevexpress Tabcontrolを持っています。 TabControlの中に私は持っていますDevexpress Grid。 グリッド内で実行時に次のコードでボタンをロードしています。ボタンクリックでDevexpress TabControlでタブページを追加する方法は?

GridViewCommandColumn col = new GridViewCommandColumn(); 
GridViewCommandColumnCustomButton CusButton = new GridViewCommandColumnCustomButton(); 
CusButton.ID = "btn1"; 
CusButton.Image.Url = "~/Images/color.jpg";  
col.ButtonType = ButtonType.Image; 
col.CustomButtons.Add(CusButton); 
gridview.Columns.Add(col); 

は今でボタンのクリックに、私は最初のタブに、このグリッドを保持そのDevExpress社のTabControlのタブページを追加する必要があります。

しかし、その私はちょうどタブページのオブジェクトを作成し、DevExpress社のGridViewのを持っているGridcontrol.ascxユーザーコントロールをロード

クリック追加取得していない、そのは、そのボタンの上にリフレッシュばかり。 その後、私はちょうど私のタブページのユーザーコントロールaddTabPages法と呼ばれ、tabPreviewがのTabControlのユーザーコントロールためのオブジェクトであるコード以下it.Inのパラメータとしてこのタブページオブジェクトを渡します。 addTabPages方法で

tabpagenew = new TabPage(); 
Gc = (GridControl)Page.LoadControl(@"GridControl.ascx"); 
Gc.ID = "GC" + currDDIndex; 
ASPxGridView grdPreview = (ASPxGridView)Gc.FindControl("ggc_preview"); 
grdPreview.ID = "grd" + currDDIndex; 
tabpagenew.Controls.Add(Gc); 
tabPreview.addTabPages(tabpagenew); 

、私はちょうど

public void addTabPages(TabPage tab_Page) 
{ 
    ActiveIndex = ASPxPageControl1.ActiveTabIndex + 1; 
    int index = ASPxPageControl1.TabPages.Count + 1; 
    ASPxPageControl1.TabPages.Add(tab_Page); 
    tab_Page.ToolTip = tab_Page.Text; 
    tab_Page.Name = tab_Page.Name;     
    ImageButton button = new ImageButton(); 
    button.ImageUrl = "~\\Images\\close.png"; 
    button.Style.Add(HtmlTextWriterStyle.Cursor, "Hand"); 
    button.Click += new ImageClickEventHandler(Close_Click); 
    button.Attributes.Add("onclick", "TabClose('" + hdnCurrentTab.ClientID + "','" + tab_Page.Index + "');");    
    tab_Page.TabTemplate = new AddTabHeading(button, tab_Page.Text, ASPxPopupMenu1, ASPxPageControl1.ActiveTabPage.VisibleIndex, ASPxPageControl1);     
} 
+0

完全なコードまたは少なくともタブページを追加する部分は投稿できますか? – Filip

+0

@Filip:タブページコードを追加するだけで簡単に説明を編集しました。 –

+0

ボタンのクリック後にaddTabPagesが実行されますか? – Filip

答えて

1

:UpdatePanelの:あなたは、ASPの間でタブコントロールを配置する必要があり

  1. あなたがダウンロードできるサンプルプロジェクトを持っています。
  2. 隠しDIVの内側にボタンを追加します。
  3. 新しいタブを追加する必要があるときはいつでも、ボタンクリック機能を呼び出します。

これはコードです:あなたのC#コードで今すぐ

<asp:UpdatePanel runat="server" ID="ClientDetailsUpdatePanel" > 
    <ContentTemplate> 
     <div style="display:none"> 
      <asp:Button ID="CallBackHiddenButton" runat="server" OnClick="CallBackHiddenButton_Click" Text="Button"/> 
     </div> 

     <dx:ASPxPageControl ID="DetailsClientTabs" ClientInstanceName="DetailsClientTabs" runat="server" ActiveTabIndex="0" 
      ActiveTabStyle-Border-BorderStyle="None" EnableCallBacks="false" 
      ActiveTabStyle-BackColor="Transparent" ContentStyle-BackColor="Transparent" 
      ContentStyle-BorderRight-BorderStyle="None" ContentStyle-BorderLeft-BorderStyle="None" 
      ContentStyle-BorderTop-BorderStyle="None" ContentStyle-BorderBottom-BorderStyle="None" 
      EnableTheming="False" ContentStyle-Border-BorderColor="Transparent"> 

     </dx:ASPxPageControl> 
    </ContentTemplate> 
</asp:UpdatePanel> 

1-ボタンをハンドルに新しいページを追加するためにクリックしてください:

protected void CallBackHiddenButton_Click(object sender, EventArgs e) 
    { 
     TabPage newPage = new TabPage("test" + DateTime.Now.Second, "maged" + DateTime.Now.Second); 
     DetailsClientTabs.TabPages.Add(newPage); 

     //You always need to reassign the previous tabs pages 
     for (int i = 0; i < DetailsClientTabs.TabPages.Count; i++) 
     { 
      Control cc = Page.LoadControl("~/Forms/Client/Details/TabsPages/TestUserCtrl.ascx"); 
      cc.ID = String.Format("control_di_", DateTime.Now); 
      DetailsClientTabs.TabPages[i].Controls.Add(cc); 
     } 

     //If you need to get the new added tab to be the active one! 
    DetailsClientTabs.ActiveTabIndex = DetailsClientTabs.TabPages.Count - 1; 
     } 

これは役立つかもしれません君は。

関連する問題