protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if ((e.Item is GridEditableItem || e.Item is GridDataItem) && e.Item.IsInEditMode) { GridEditableItem editForm = (GridEditableItem)e.Item; (editForm.FindControl("ddlGridAdjBy") as DropDownList).SelectedValue = ((System.Data.DataRowView)(editForm.DataItem)).Row.ItemArray[1].ToString(); // throws an exception here } }protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e){ if (e.Item is GridEditableItem && (e.Item as GridEditableItem).IsInEditMode) { GridEditFormItem editItem = (GridEditFormItem)e.Item; RadComboBox dropdownUOM = (RadComboBox)editItem.FindControl("editList"); // This PopulateDropDown works in populating the control with items // //For Each item As Something In CollectionThatGetsIterated // Dim NewListItem As New RadComboBoxItem() // NewListItem.Text = GetLocalizedText(item.Something1, item.Something2) // NewListItem.Value = GetValue(item.Value) // theDropDownControl.Items.Add(NewListItem) //Next PopulateDropDown(21, dropdownUOM); dropdownUOM.DataBind(); }}// This is what sets the item and edit templates. Since the items in the dropdown are added to the Items collection in a loop vs. against a dataset/collection the ListTextField and ListValueFields are not set. private void BuildLookupListColumn(string columnName, GridTemplateColumn existingTemplateColumn){ existingTemplateColumn.ItemTemplate = new CustomItemTemplate(columnName); KeyValuePair<string, string> emptyListItem = new KeyValuePair<string, string>("Select", string.Empty); existingTemplateColumn.EditItemTemplate = new CustomEditTemplate(columnName, emptyListItem); existingTemplateColumn.ConvertEmptyStringToNull = true;}public class CustomEditTemplate: ITemplate, IBindableTemplate{ private string _columnName; private KeyValuePair<string, string> _emptyListItem; public CustomEditTemplate() { } public CustomEditTemplate(string columnName, KeyValuePair<string, string> emptyListItem) { this.ColumnName = columnName; } public string ColumnName { get { return _columnName; } set { _columnName = value; } } public KeyValuePair<string, string> EmptyListItem { get { return _emptyListItem; } set { _emptyListItem = value; } } public void InstantiateIn(Control container) { RadComboBox displayControl = new RadComboBox(); displayControl.ID = "editList"; displayControl.DataBinding += DisplayControl_DataBinding; container.Controls.Add(displayControl); } private void DisplayControl_DataBinding(object sender, EventArgs e) { //Dim target As RadComboBox = DirectCast(sender, RadComboBox) //Dim container As GridEditFormItem = DirectCast(target.NamingContainer, GridEditFormItem) //Dim displayControl As RadComboBox = DirectCast(sender, RadComboBox) //'Note: This line below throws a binding error on insert DataBinding: 'Telerik.Web.UI.GridInsertionObject' does not contain a property with the name 'AccountSettings'. //displayControl.SelectedValue = DataBinder.Eval(container.DataItem, ColumnName).ToString() //displayControl.SelectedValue = displayControl.SelectedValue } public System.Collections.Specialized.IOrderedDictionary ExtractValues(Control container) { OrderedDictionary dict = new OrderedDictionary(); string value; value = (((RadComboBox)((GridEditFormItem)container).FindControl("editList")).SelectedValue); dict.Add(ColumnName, value); return dict; }}public class CustomItemTemplate : ITemplate{ private string _columnName; public CustomItemTemplate() { } public CustomItemTemplate(string columnName) { this.ColumnName = columnName; } public string ColumnName { get { return _columnName; } set { _columnName = value; } } public void InstantiateIn(Control container) { LiteralControl displayControl = new LiteralControl(); displayControl.ID = "litEditList"; displayControl.DataBinding += DisplayControl_DataBinding; container.Controls.Add(displayControl); } private void DisplayControl_DataBinding(object sender, EventArgs e) { LiteralControl target = (LiteralControl)sender; GridDataItem container = (GridDataItem)target.NamingContainer; target.Text = (DataRowView)container.DataItem(_columnName).ToString(); }}I'm working on a project for a client, where the app I'm building will serve to edit an XML file consumed by a live application. The application is written in Flash, and quite unstable, so I am kind of stuck with the less than optimal XML setup.
The XML is made up (simplified) like the following:
<MenuItem id="1" label="category1"> <Description>Description for Category 1</Description> <Image>Image for category 1</Image> <Item label ="Category1Item1"> <Price>12.99</Price> <Type>Wood</Type> <additionalElementsHere /> </Item> <Item label ="Category1Item2"> <Price>112.99</Price> <Type>Stone</Type> <additionalElementsHere /> </Item> <AdditionalItemsHere /> </MenuItem> <AdditionMenuITemsHere />
I've been using a Telerik treeview bound to an XMLDataSource to display the data and allow users to interact with it (add/delete nodes, move nodes by means of drag and drop, or copy nodes and the underlying elements). So far, so good.
Now my client would like to know if it is somehow possible to use the <Type> Element of the Item elements as grouping containers.
So currently the treeview looks like this:
category1
--Category1Item1
--Category1Item2
And ideally, it should end up looking like this:
category1
--Wood
----Category1Item1
----Category1Item123
--Stone
----Category1Item2
----Category1Item456
I read up on HierarchicalDataTemnplates, but have not managed to figure out if these work in the ASP.NET controls supplied by Telerik. I would like to try and stick to what I have so far, as many hours of work have already gone into the product so far.
I'd appreciate it if someone could point me in the right direction of how to tackle this particular issue.
Thanks in advance :)
Peter
RadScheduler1.SelectedView = SchedulerViewType.TimelineView; RadScheduler1.TimelineView.SlotDuration = TimeSpan.Parse("14.00:00:00"); RadScheduler1.TimelineView.ColumnHeaderDateFormat = "MM/dd/yyyy"; RadScheduler1.ColumnWidth = 180; RadScheduler1.TimelineView.TimeLabelSpan = 1; RadScheduler1.TimelineView.NumberOfSlots = 6;</telerik:RadOrgChart>
protected void Page_Load(object sender, EventArgs e)
{
BindToDataSet(this.RadOrgChart1);
}
private static void BindToDataSet(RadOrgChart orgChart)
{
string dbConnectionString = ConfigurationManager.ConnectionStrings["mambophilprod"].ConnectionString;
MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT Id, ParentId, CurrentPosition From mambophil_flat_tree",
dbConnectionString);
DataSet links = new DataSet();
adapter.Fill(links);
orgChart.DataTextField = "CurrentPosition";
orgChart.DataFieldID = "Id";
orgChart.DataFieldParentID = "ParentID";
orgChart.DataSource = links;
orgChart.DataBind();
}
This is what I would like to do.
- I want to show the first few levels (say 10)
- When the user clicks on one of the last levels, the system fetches the next 10 levels.
Is this possible? Appreciate your help.
Sree

