2012-01-11 2 views
0

У меня есть Devexpress Tabcontrol. Внутри этого Tabcontrol у меня есть Devexpress Grid. Внутри этой сетки я загружаю кнопку во время выполнения по следующему коду.Как добавить вкладку Tab в окне 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); 

Теперь на этой нажатием кнопки, мне нужно, чтобы добавить страницу Tab в этом DevExpress TabControl сохранить эту сетку на первой вкладке.

Но его не получает добавил, его получение обновилась на этой кнопке мыши

Я только что создал объект для Tab страницы и загрузить Gridcontrol.ascx пользовательский элемент управления, который имеет DevExpress GridView. После того, что я только что назвал addTabPages метод в моем TabPage UserControl и прошел этот TabPage объект в качестве параметра в it.In ниже код tabPreview является объектом для TabControl UserControl.

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

В addTabPages метод, я просто добавил Tab страницы по индексу,

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

Можете ли вы опубликовать полный код или, по крайней мере, часть, добавляющую вкладку Tab? – Filip

+0

@Filip: Я просто коротко отредактировал описание с добавлением кода страницы вкладки. –

+0

Является ли addTabPages выполненным после нажатия кнопки или нет? – Filip

ответ

1

В вашей странице ASPX:

  1. Вам нужно поставить вкладки между осиной: UpdatePanel.
  2. Добавить кнопку внутри скрытого DIV.
  3. Когда вам нужно добавить новую вкладку, вызовите функцию нажатия кнопки.

Это код:

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

Теперь в коде C#:

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

Это может помочь вы.

 Смежные вопросы

  • Нет связанных вопросов^_^