Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Building on Sonteks example here is an example that creates a template that contains elements that are then bound using databinding.</p> <pre><code>public partial class View : PortalModuleBase { protected void Page_Load(object sender, EventArgs e) { } #region MasterListView_ItemDataBound public void MasterListView_ItemDataBound(object sender, ListViewItemEventArgs e) { ListViewItem objListViewItem = (ListViewItem)e.Item; ListViewDataItem objListViewDataItem = objListViewItem as ListViewDataItem; if (objListViewDataItem != null) { Tab objTab = (Tab)objListViewDataItem.DataItem; IEnumerable&lt;Tab&gt; Tabs = CustomData(objTab.TabID); Label TabIDLabel = (Label)objListViewItem.FindControl("TabIDLabel"); Label TabNameLabel = (Label)objListViewItem.FindControl("TabNameLabel"); TabIDLabel.Text = objTab.TabID.ToString(); TabNameLabel.Text = objTab.TabName; AddListView(objTab.TabName, objListViewItem, Tabs); } } #endregion #region CustomData static IEnumerable&lt;Tab&gt; CustomData(int? ParentID) { TabAdminDataContext objTabAdminDataContext = new TabAdminDataContext(); var myCustomData = from Tabs in objTabAdminDataContext.Tabs where Tabs.ParentId == ParentID select Tabs; return myCustomData.AsEnumerable(); } #endregion #region AddListView private void AddListView(string CurrentTabName, Control container, IEnumerable&lt;Tab&gt; ChildTabs) { // The Tab has Children so add a ListView if (ChildTabs.Count() &gt; 0) { ListView ChildListView = new ListView(); ChildListView.ID = "ChildListView"; ChildListView.ItemCommand += ListView_ItemCommand; ChildListView.EnableViewState = true; ChildListView.LayoutTemplate = new MyLayoutTemplate(); ChildListView.ItemTemplate = new MyItemTemplate(); ChildListView.DataSource = ChildTabs; ChildListView.DataBind(); // Put the ListView in a Panel var oTR = new HtmlGenericControl("tr") { ID = "ChildListViewTR" }; var oTD = new HtmlGenericControl("td") { ID = "ChildListViewTD" }; Panel objPanel = new Panel(); objPanel.ID = "ListViewPanel"; objPanel.ToolTip = CurrentTabName; objPanel.Controls.Add(ChildListView); oTD.Controls.Add(objPanel); oTR.Controls.Add(oTD); container.Controls.Add(oTR); } } #endregion #region ListView_ItemCommand protected void ListView_ItemCommand(object sender, ListViewCommandEventArgs e) { LinkButton objButton = (LinkButton)sender; Label1.Text = objButton.Text; MasterListView.DataBind(); } #endregion #region MyLayoutTemplate public class MyLayoutTemplate : ITemplate { public void InstantiateIn(Control container) { var oTR = new HtmlGenericControl("tr") { ID = "itemPlaceholder" }; container.Controls.Add(oTR); } } #endregion #region ItemTemplate public class MyItemTemplate : ITemplate { public void InstantiateIn(Control container) { var oTR = new HtmlGenericControl("tr"); var oTD1 = new HtmlGenericControl("td"); LinkButton TabIDLinkButton = new LinkButton(); TabIDLinkButton.ID = "TabIDLinkButton"; oTD1.Controls.Add(TabIDLinkButton); oTR.Controls.Add(oTD1); var oTD2 = new HtmlGenericControl("td"); Label TabNameLabel = new Label(); TabNameLabel.ID = "TabNameLabel"; oTD2.Controls.Add(TabNameLabel); oTR.Controls.Add(oTD2); oTR.DataBinding += DataBinding; container.Controls.Add(oTR); } public void DataBinding(object sender, EventArgs e) { var container = (HtmlGenericControl)sender; var dataItem = ((ListViewDataItem)container.NamingContainer).DataItem; Tab objTab = (Tab)dataItem; LinkButton TabIDLinkButton = (LinkButton)container.FindControl("TabIDLinkButton"); Label TabNameLabel = (Label)container.FindControl("TabNameLabel"); TabIDLinkButton.Text = "+" + objTab.TabID.ToString(); TabNameLabel.Text = objTab.TabName; IEnumerable&lt;Tab&gt; ChildTabs = View.CustomData(objTab.TabID); View objView = new View(); objView.AddListView(objTab.TabName, container, ChildTabs); } } #endregion } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload