Databinding with Custom Attributes
When binding the Telerik RadMenu to data, custom attributes can be set in the ItemDataBound event.
Here is an example:
<telerik:RadMenu RenderMode="Lightweight" ID="RadMenu1" runat="server" OnItemDataBound="RadMenu1_ItemDataBound">
</telerik:RadMenu>
protected void Page_Load(object sender, EventArgs e){
//dynamically crate a table to populate the menu
DataTable table1 = new DataTable();
table1.Columns.Add("ID");
table1.Columns.Add("ParentID");
table1.Columns.Add("Roles");
// the column for the custom attributes
table1.Columns.Add("Text");
table1.Rows.Add(new string[] { "1", null, "1", "Politics" });
table1.Rows.Add(new string[] { "2", null, "1", "Sports" });
table1.Rows.Add(new string[] { "3", null, "3", "Events" });
table1.Rows.Add(new string[] { "4", "1", "4", "CNN" });
table1.Rows.Add(new string[] { "5", "1", "5", "NBC" });
table1.Rows.Add(new string[] { "6", "1", "6", "ABC" });
table1.Rows.Add(new string[] { "7", "2", "7", "US Sports" });
table1.Rows.Add(new string[] { "8", "2", "2", "European Sports" });
table1.Rows.Add(new string[] { "9", "7", "4", "Baseball" });
table1.Rows.Add(new string[] { "10", "7", "3", "Football" });
table1.Rows.Add(new string[] { "11", "7", "2", "Basketball" });
table1.Rows.Add(new string[] { "12", "8", "4", "Soccer" });
table1.Rows.Add(new string[] { "14", "3", "5", "Oscar Awards" });
table1.Rows.Add(new string[] { "15", "3", "2", "MTV Movie Awards" });
RadMenu1.DataSource = table1;
RadMenu1.DataFieldID = "ID";
RadMenu1.DataFieldParentID = "ParentID";
RadMenu1.DataTextField = "Text";
RadMenu1.DataBind();
}
protected void RadMenu1_ItemDataBound(object sender, Telerik.Web.UI.RadMenuEventArgs e)
{
DataRowView dataRow = (DataRowView)e.Item.DataItem;
e.Item.Attributes["Roles"] = dataRow["Roles"].ToString();
e.Item.ToolTip = e.Item.Attributes["Roles"];
//we set the Tooltip just for testing purposes
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim table1 As New DataTable()
table1.Columns.Add("ID")
table1.Columns.Add("ParentID")
table1.Columns.Add("Roles")
' the column for the custom attributes
table1.Columns.Add("Text")
table1.Rows.Add(New String() {"1", Nothing, "1", "Politics"})
table1.Rows.Add(New String() {"2", Nothing, "1", "Sports"})
table1.Rows.Add(New String() {"3", Nothing, "3", "Events"})
table1.Rows.Add(New String() {"4", "1", "4", "CNN"})
table1.Rows.Add(New String() {"5", "1", "5", "NBC"})
table1.Rows.Add(New String() {"6", "1", "6", "ABC"})
table1.Rows.Add(New String() {"7", "2", "7", "US Sports"})
table1.Rows.Add(New String() {"8", "2", "2", "European Sports"})
table1.Rows.Add(New String() {"9", "7", "4", "Baseball"})
table1.Rows.Add(New String() {"10", "7", "3", "Football"})
table1.Rows.Add(New String() {"11", "7", "2", "Basketball"})
table1.Rows.Add(New String() {"12", "8", "4", "Soccer"})
table1.Rows.Add(New String() {"14", "3", "5", "Oscar Awards"})
table1.Rows.Add(New String() {"15", "3", "2", "MTV Movie Awards"})
RadMenu1.DataSource = table1
RadMenu1.DataFieldID = "ID"
RadMenu1.DataFieldParentID = "ParentID"
RadMenu1.DataTextField = "Text"
RadMenu1.DataBind()
End Sub
Protected Sub RadMenu1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.WebControls.RadMenuEventArgs) Handles RadMenu1.ItemDataBound
Dim dataRow As DataRowView = CType(e.Item.DataItem, DataRowView)
e.Item.Attributes("Roles") = dataRow("Roles").ToString()
e.Item.ToolTip = e.Item.Attributes("Roles")
'we set the Tooltip just for testing purposes
End Sub