Hi,
I am using the Radfilter in my vb.net(2008) project.I am using the RadTreeview as the radcomboboxItem in the datafield editor.I mange to build the control dynamically.But when I add new rows for the filter,previously selected value is set to empty.
Please help on this issue..
I am using the Radfilter in my vb.net(2008) project.I am using the RadTreeview as the radcomboboxItem in the datafield editor.I mange to build the control dynamically.But when I add new rows for the filter,previously selected value is set to empty.
Please help on this issue..
Public Overrides Sub InitializeEditor(ByVal container As System.Web.UI.Control)
_combo = New RadComboBox()
_combo.ID = "MyCombo"
_combo.Width = 200
_combo.Height = 180
'For the Treeview
Dim treeItem As New ItemTemplateTreeView(CreateDataSource())
_combo.ItemTemplate = treeItem
Dim item As New RadComboBoxItem()
_combo.Items.Add(item)
_combo.OnClientDropDownOpened = "OnClientDropDownOpenedHandler"
container.Controls.Add(_combo)
End Sub
Public Overrides Function ExtractValues() As System.Collections.ArrayList
Dim list As ArrayList = New ArrayList()
list.Add(DirectCast(_combo.Items(0).FindControl("myTreeview"), RadTreeView).SelectedValue)
Return list
End Function
Public Overrides Sub SetEditorValues(ByVal values As System.Collections.ArrayList)
If Not values Is Nothing And values.Count > 0 Then
If values(0) Is Nothing Then
Return
End If
'Dim item As RadComboBoxItem = _combo.FindItemByValue(values(0).ToString())
Dim item As RadTreeNode = DirectCast(_combo.Items(0).FindControl("myTreeview"), RadTreeView).FindNodeByValue(values(0).ToString())
'If Not item Is Nothing Then
item.Selected = True
_combo.Items(0).Text = item.Text
' _combo.Items(0).Value = item.Value
End If
End If
End Sub
Protected Function CreateDataSource() As DataTable
Dim dataTable As New DataTable()
dataTable.Columns.Add(New DataColumn("Key", GetType(String)))
dataTable.Columns.Add(New DataColumn("Name", GetType(String)))
dataTable.Columns.Add(New DataColumn("ParentId", GetType(String)))
Dim AnalysItems As AnalysListItemList = TryCast(DataSource, AnalysListItemList )
For Each item As CategoryValueListItem In AnalysItems
Dim dr As DataRow = dataTable.NewRow()
dr("Key") = item.Key
dr("Name") = item.Name
If item.Category = item.Key Then
dr("ParentId") = DBNull.Value
Else
dr("ParentId") = item.Category End If
dataTable.Rows.Add(dr)
Next
Return dataTable
End Function
Public Class ItemTemplateTreeView
Implements ITemplate
Private dataTable As DataTable
Public Sub New(ByVal _dataTable As DataTable)
'
' TODO: Add constructor logic here
'
Me.dataTable = _dataTable
End Sub
Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
Dim div As New HtmlGenericControl("div")
div.ID = "div1"
div.Attributes.Add("onclick", "StopPropagation(event);")
Dim tree As New RadTreeView()
Dim item As RadComboBoxItem = DirectCast(container, RadComboBoxItem)
tree.ID = "myTreeView"
tree.OnClientNodeClicking = "nodeClicking"
tree.DataTextField = "Name"
tree.DataFieldID = "Key"
tree.DataValueField = "Key"
tree.DataFieldParentID = "ParentId"
tree.DataSource = dataTable
tree.DataBind()
div.Controls.Add(tree)
container.Controls.Add(div)
End Sub
End Class