2012-01-11 86 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方法在我TabPage的用户控件和it.In通过这个标签页对象作为参数下面的代码tabPreview自定义的Tabcontrol用户控件的对象。

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

你可以发布完整的代码或至少是添加标签页的部分吗? – Filip 2012-01-11 07:56:13

+0

@Filip:我只是通过添加Tab页面代码简单地编辑了描述。 – 2012-01-18 07:48:40

+0

按钮点击后是否执行addTabPages? – Filip 2012-01-18 10:24:13

回答

1

在你的aspx页面:

  1. 你需要把ASP的选项卡控件: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; 
     } 

这可能有助于您。