Jag vill skapa en serverkontroll som ärver MultiView och innehåller två stycken View. Var och en av dessa View ska innehålla en LinkButton som växlar mellan de båda Viewerna. Man kan säga att det blir lite som en tabkontroll. Hej! Tack! Såg ett litet fel i mitt exempel. Tab-klassen ärver av Panel och INamingContainer. Den ska endast ärva av Panel.Custom control som ärver MultiView
I varje View ska det sedan gå att lägga vilken kod som helst, precis som i en vanlig View i en MultiView. Slutresultatet kan se ut ungefär enligt följande:
<asp:DoubleView runat="server" ID="DoubleView1" ActiveViewIndex=0>
<FirstView LinkText="Visa andra vyn">
Första vyn
</FirstView>
<SecondView LinkText="Visa första vyn">
Andra vyn
</SecondView>
</asp:DoubleView>
Det jag främst behöver hjälp med är hur jag gör för att skapa Viewerna inuti min "DoubleView". Ska jag göra en Composite control eller en "vanlig" Custom control?Sv: Custom control som ärver MultiView
Jag håller själv på att utveckla en tabbkontroll (Den ärver dock inte MultiView). Det är första gången jag gör något sådant så det kanske inte är den ultimata lösningen, men det kanske kan hjälpa dig.
Jag skapade en vanlig user control med en extra klass, som ärver av en Panel och som har tabbens namn som attribut. Sen är det bara att iterera listan med tabbar.
namespace userControls
{
[ParseChildren(true, "Tabs"), PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public partial class TabView : UserControl, INamingContainer
{
private List<Tab> tabs = new List<Tab>();
protected void Page_Init()
{
...
}
protected override void CreateChildControls()
{
...
}
...
}
public sealed class Tab : Panel, INamingContainer
{
private string tabName;
public string TabName
{
get
{
return this.tabName;
}
set
{
this.tabName = value;
}
}
}
}
<controls:TabView ID="tabbar" runat="server" CssClass="tabView" Width="500px" Height="200px">
<controls:Tab TabName="tab1" runat="server">
<asp:Label runat="server" Text="blahaa"></asp:Label>
</controls:Tab>
<controls:Tab TabName="tab2" runat="server">
<asp:Label runat="server" Text="blahaa igen"></asp:Label>
</controls:Tab>
</controls:TabView>
Allt fungerar perfekt förutom att designer.cs inte uppdateras med kontrollerna som ligger i tabbarna. Lägger jag till dem manuellt så fungerar det, eller om jag använder FindControl istället, men det blir väldigt mycket extra kod.
Någon som har en susning om varför designer.cs inte uppdateras automatiskt med tabbarnas innehåll?
//Patrik
Sv:Custom control som ärver MultiView
Det ser ju fint ut, jag skulle kunna göra samma sak men ha exakt två objekt i min lista, inte dynamiskt antal som du har. Jag testar.
Tyärr har jag inget svar på din fråga just nu. Återkommer om jag kommer på något.Sv: Custom control som ärver MultiView