TabStrip Tabs Collection
In some cases, you might need to declare tabs for objects in a collection. The TabStrip allows you to render its tabs by iterating that collection.
This is an alternative approach for configuring the component instead of manually declaring each tab as a separate TabStripTab
instance inside the TabStrip
tag.
If you render components in the tabs created in a
foreach
loop, you may want to set their@key
parameter to unique values, in order to ensure they will re-render. If you do not, the framework will render one instance of your custom component for all tabs and will only set its parameters, it will not initialize anew (OnInitialized
will not fire a second time, onlyOnParametersSet
will).
You can find another example with some more details in the following sample project: Dynamic Tabs.
@result
<TelerikTabStrip ActiveTabIndexChanged="@TabChangedHandler">
@{
foreach (MyTabModel item in tabs)
{
<TabStripTab Title="@item.Title" Disabled="@item.Disabled" @key="@item">
Content for tab @item.Title
</TabStripTab>
}
}
</TelerikTabStrip>
<TelerikButton OnClick="@( () => tabs[1].Disabled = !tabs[1].Disabled )">Toggle the Disabled state of the second tab</TelerikButton>
@code {
MarkupString result { get; set; }
void TabChangedHandler(int newIndex)
{
string tempResult = $"current tab {newIndex} selected on {DateTime.Now}";
MyTabModel currTab = tabs[newIndex];
tempResult += $"<br />the new tab has a title {currTab.Title}";
result = new MarkupString(tempResult);
}
List<MyTabModel> tabs = new List<MyTabModel>()
{
new MyTabModel { Title = "One" },
new MyTabModel { Title = "Two", Disabled = true },
new MyTabModel { Title = "Three" }
};
public class MyTabModel
{
public string Title { get; set; }
public bool Disabled { get; set; }
}
}