Consider:
I am dynamically creating a toolbar that has a RadComboBox button, such that I do the following:
The idea is that I want to populate the combobox in the toolbar, with a treeview. First, for some reason, the treeview is flat. If I use the same stored procedure in a treeview that I create in ASPX, it renders perfectly. Using the exact same in this dynamic fashion, there are no parents/children. Just a flat list of all nodes.
Second: the treeview is fine the first rendering of the page. When an AJAX post-back occurs, I get an error stating that the treeview does not exist.
I am looking for two answers:
1) How do I get the full treeview with parent/children to render?
2) How do I cause the treeview to not disappear after the first AJAX post-back?
I hope that this is enough code for you to understand what I am doing.
Thank you,
Tomas
I am dynamically creating a toolbar that has a RadComboBox button, such that I do the following:
' in the page_load:
If
Not
m_ThisPage.IsPostBack
Then
Dim
btnSearchByTxt
As
New
RadToolBarButton()
btnSearchByTxt.Text =
"SearchFor"
btnSearchByTxt.Value =
"searchfor"
m_RadToolBar.Items.Add(btnSearchByTxt)
InstantiateSearch()
Dim
cboSearchItem
As
RadToolBarItem = m_RadToolBar.FindItemByText(
"SearchFor"
)
Dim
cboSearchBox
As
RadComboBox =
CType
(cboSearchItem.FindControl(
"SearchComboBox"
), RadComboBox)
AddHandler
cboSearchBox.SelectedIndexChanged,
AddressOf
cboSearchBox_SelectedIndexChanged
End
If
' -------------- snip ----------------
Private
Sub
InstantiateSearch()
Dim
searchTemplate
As
New
ComboBoxSearchTemplate
Dim
cboSearchItem
As
RadToolBarItem = m_RadToolBar.FindItemByText(
"SearchFor"
)
'Dim searchTemplate2 As New TextBoxSearchTemplate()
'Dim textSearchItem As RadToolBarItem = m_RadToolBar.FindItemByText("SearchFor")
If
TypeOf
cboSearchItem
Is
RadToolBarButton
Then
searchTemplate.InstantiateIn(cboSearchItem)
End
If
m_RadToolBar.DataBind()
End
Sub
Private
Class
ComboBoxSearchTemplate
Implements
ITemplate
Public
Sub
InstantiateIn(
ByVal
container
As
Control)
Implements
ITemplate.InstantiateIn
Dim
cboBox1
As
New
RadComboBox()
cboBox1.ID =
"SearchComboBox"
cboBox1.DropDownWidth = 460
cboBox1.Sort = RadComboBoxSort.Ascending
cboBox1.SortCaseSensitive =
False
'cboBox1.DropDownCssClass = "searchDropDown"
cboBox1.AllowCustomText =
True
cboBox1.AutoPostBack =
True
cboBox1.EmptyMessage =
"Search for..."
cboBox1.EnableItemCaching =
True
cboBox1.EnableLoadOnDemand =
True
cboBox1.MaxHeight = 320
cboBox1.MaxLength = 2999
cboBox1.Width = 250
cboBox1.ExpandDelay = 2500
cboBox1.LoadingMessage =
"Searching..."
cboBox1.Attributes.Add(
"onitemsrequested"
,
"SearchComboBox_ItemsRequested"
)
'cboBox1.Attributes.Add("onkeydown", "fire()")
cboBox1.OnClientKeyPressing =
"fire"
cboBox1.CloseDropDownOnBlur =
False
cboBox1.Text =
""
cboBox1.Font.Size = 9
cboBox1.Font.Bold =
False
cboBox1.Font.Name =
"Sans-Serif"
cboBox1.DataTextField =
"CMM_DESCRIPTION"
cboBox1.Items.Add(
New
RadComboBoxItem(
""
))
Dim
ctt
As
ComboBoxTreeTemplate =
New
ComboBoxTreeTemplate
ctt.InstantiateIn(cboBox1.Items(0))
AddHandler
cboBox1.DataBinding,
AddressOf
cboBox1_DataBinding
AddHandler
cboBox1.ItemsRequested,
AddressOf
cboBox1_ItemsRequested
cboBox1.DataBind()
container.Controls.Add(cboBox1)
End
Sub
End
Class
Private
Class
ComboBoxTreeTemplate
Implements
ITemplate
Public
Sub
InstantiateIn(
ByVal
container
As
Control)
Implements
ITemplate.InstantiateIn
Dim
rtv
As
RadTreeView =
New
RadTreeView()
rtv.ID =
"RadTreeView1"
rtv.Skin =
"Telerik"
rtv.SingleExpandPath =
True
rtv.DataTextField =
"CMM_DESCRIPTION"
rtv.DataValueField =
"CMM_ID"
rtv.DataFieldParentID =
"CMM_PARENT_ID"
Dim
sProc
As
String
=
"sptMaterialInventory_AddEdit_GetCommodity"
Dim
connection
As
New
SqlConnection(ConfigurationManager.ConnectionStrings(
"TRACURATEConnectionString"
).ConnectionString)
Dim
adapter
As
New
SqlDataAdapter(sProc, connection)
adapter.SelectCommand.CommandType = CommandType.StoredProcedure
Dim
dataTable
As
New
DataTable()
adapter.Fill(dataTable)
rtv.DataSource = dataTable
rtv.DataBind()
container.Controls.Add(rtv)
End
Sub
End
Class
The idea is that I want to populate the combobox in the toolbar, with a treeview. First, for some reason, the treeview is flat. If I use the same stored procedure in a treeview that I create in ASPX, it renders perfectly. Using the exact same in this dynamic fashion, there are no parents/children. Just a flat list of all nodes.
Second: the treeview is fine the first rendering of the page. When an AJAX post-back occurs, I get an error stating that the treeview does not exist.
I am looking for two answers:
1) How do I get the full treeview with parent/children to render?
2) How do I cause the treeview to not disappear after the first AJAX post-back?
I hope that this is enough code for you to understand what I am doing.
Thank you,
Tomas