Hi,
I need to define the GridViews's columns in codbehind , because the number of the columns and their binding are dynamic.
Some of these columns are GridViewDataColumn and some are GridViewComboBoxColumn . Would you please send me piece of code that shows how I can define the columns and their features (binding,header,...) in code behind.
My other question is realted to GridViewComboBoxColumn , the data for ComboBox is dynamic , it would be different based on the column . For example the combobox in column one has got some data and the combobox in column2 has got other data. It means I need to handle Loaded event for each combo box as well to load their specific data (when user click on GridViewComboBoxColumn ). I'd be thankful you let me know how I can handle this feature as well.
Here is how I defined the above scenario in standard DataGrid and now I need to replace the standard DaraGrid with TelerikRadGridView
I need to define the GridViews's columns in codbehind , because the number of the columns and their binding are dynamic.
Some of these columns are GridViewDataColumn and some are GridViewComboBoxColumn . Would you please send me piece of code that shows how I can define the columns and their features (binding,header,...) in code behind.
My other question is realted to GridViewComboBoxColumn , the data for ComboBox is dynamic , it would be different based on the column . For example the combobox in column one has got some data and the combobox in column2 has got other data. It means I need to handle Loaded event for each combo box as well to load their specific data (when user click on GridViewComboBoxColumn ). I'd be thankful you let me know how I can handle this feature as well.
Here is how I defined the above scenario in standard DataGrid and now I need to replace the standard DaraGrid with TelerikRadGridView
private void createPropertyColumns()
{
this.grdProduct.Columns.Clear();
this.grdProduct.Columns.Add(new DataGridTextColumn { Header = "ProductID", Binding = new Binding("ProductID"), IsReadOnly = true, Width = new DataGridLength(90) });
this.grdProduct.Columns.Add(new DataGridTextColumn { Header = "SupplierDesc", Binding = new Binding("SupplierDesc"), IsReadOnly = true, Width = new DataGridLength(100) });
for (int count = 1; count <= ProductFilterCollection.Count; count++)
{
ServiceProduct.ProductFilter Filterdesc = ProductFilterCollection.Where(x => x.ProductFilterID == int.Parse(GetFilterID(count, false))).FirstOrDefault();
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
if (Filterdesc != null)
{
templateColumn.Header = Filterdesc.Description.ToString();
}
else
{
templateColumn.Header = "";
}
templateColumn.CellTemplate = CreateCellTemplate(typeof(TextBlock), "Filter" + count.ToString());
templateColumn.CellEditingTemplate = (DataTemplate)Resources["myCellEditingTemplate"];
grdProduct.Columns.Add(templateColumn);
}
this.grdProduct.ItemsSource = sp_ProductDetailCollection;
Cursor = Cursors.Arrow;
}
<
UserControl.Resources
>
<
DataTemplate
x:Key
=
"myCellEditingTemplate"
>
<
ComboBox
x:Name
=
"ddlProductProperty"
Loaded
=
"ddlProductProperty_Loaded"
SelectionChanged
=
"ddlProductProperty_SelectionChanged"
></
ComboBox
>
</
DataTemplate
>
</
UserControl.Resources
>
private void ddlProductProperty_Loaded(object sender, RoutedEventArgs e)
{
foreach (var item in ProductFilterCollection)
{
if (grdProduct.CurrentColumn.Header.ToString() == item.Description.ToString())
{
List<
ServiceProduct.ProductFilterValue
> lstCombo = ProductFilterValueCollection.Where(x => x.ProductFilterID == item.ProductFilterID).ToList();
ServiceProduct.ProductFilterValue emptyItem = new ServiceProduct.ProductFilterValue();
emptyItem.Value = "<
None
>";
lstCombo.Insert(0, emptyItem);
((ComboBox)sender).ItemsSource = lstCombo;
((ComboBox)sender).DisplayMemberPath = "Value";
}
}
}
Thank you,