I have a grid that when in edit and insert mode uses a FromTemplate. In that template I want to have a tree view that has checkboxes. The items will load from a SQL data source, but how do I take a column when in edit mode and check the appropriate boxes based on an array item.
My database column is named "banned_sources" and will have a value like so:
Either "0" for no banned sources, or a string like "5,61,64,91,137,139,161"
The numbers in the array match the "source_id" of my datasource. How do select the matches in my tree view if they are present in the array?
ASPX code:
My database column is named "banned_sources" and will have a value like so:
Either "0" for no banned sources, or a string like "5,61,64,91,137,139,161"
The numbers in the array match the "source_id" of my datasource. How do select the matches in my tree view if they are present in the array?
ASPX code:
<td> |
Banned Lead Sources:</td> |
<td> |
<asp:SqlDataSource ID="sqlds_affiliates" runat="server" |
ConnectionString="<%$ ConnectionStrings:Master_ConnectionString %>" |
SelectCommand="SELECT [source_id], (CAST([source_id] AS VarChar) + ' ' + [affiliate_name]) AS AffiliateName FROM [lead_affiliates] ORDER BY [source_id]"> |
</asp:SqlDataSource> |
<telerik:RadTreeView ID="tree_banned_sources" Runat="server" |
AppendDataBoundItems="True" CheckBoxes="True" |
DataSourceID="sqlds_affiliates" DataTextField="AffiliateName" |
DataValueField="source_id" MultipleSelect="True"> |
<CollapseAnimation Duration="100" Type="OutQuint" /> |
<ExpandAnimation Duration="100" /> |
</telerik:RadTreeView> |
</td> |
6 Answers, 1 is accepted
0
Accepted

Shinu
Top achievements
Rank 2
answered on 04 Feb 2009, 12:14 PM
Hi Shawn,
You can access the bound column value in the edit mode and then the Check the tree nodes as shown below.
CS:
Thanks
Shinu
You can access the bound column value in the edit mode and then the Check the tree nodes as shown below.
CS:
protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) |
{ |
if((e.Item is GridEditFormItem)&&(e.Item.IsInEditMode)) |
{ |
GridEditFormItem editFormitem = (GridEditFormItem)e.Item; |
//to access the TreeView from FormTemplate |
RadTreeView RadTree = (RadTreeView)editFormitem.FindControl("RadTreeView1"); |
//to access the parent Item |
GridDataItem dataItem = (GridDataItem)editFormitem.ParentItem; |
string strtxt = dataItem["QuantityPerUnit"].Text.ToString(); |
string[] strArr; |
// to store in a string array |
strArr = strtxt.Split(','); |
//loop through string array |
for (int j = 0; j < strArr.Length; j++) |
{ |
foreach(RadTreeNode node in RadTree.Nodes ) |
{ |
// loop through each node and then check the nodes accordingly |
if (node.Index.ToString() == strArr[j].ToString()) |
{ |
node.Checked = true; |
} |
} |
} |
} |
} |
Thanks
Shinu
0

Shawn
Top achievements
Rank 1
answered on 04 Feb 2009, 05:56 PM
Below is the solution in VB, I got it work thank you...
But now I have another issue. When I have the code below active, I can not insert a new record. The empty form doesn't even become visible and I get this error in IE:
A Runtime Error Has Occurred.
Do you wish to Debug?
Line: 4723
Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
Any idea why this is happening?
VB.net Solution to TreeView Array:
But now I have another issue. When I have the code below active, I can not insert a new record. The empty form doesn't even become visible and I get this error in IE:
A Runtime Error Has Occurred.
Do you wish to Debug?
Line: 4723
Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.
Any idea why this is happening?
VB.net Solution to TreeView Array:
Protected Sub grid_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles grid.ItemDataBound |
If (TypeOf e.Item Is GridEditFormItem) And e.Item.IsInEditMode Then |
Dim editFormItem As GridEditFormItem = TryCast(e.Item, GridEditFormItem) |
'accessing banned sources treeview |
Dim BannedSourcesTree As RadTreeView = CType(editFormItem.FindControl("tree_banned_sources"), RadTreeView) |
'accessing parent item |
Dim dataItem As GridDataItem = editFormItem.ParentItem |
Dim banned_sources_STR As String = dataItem("banned_sources").Text.ToString() |
Dim banned_sources_ARRAY As Array = Split(banned_sources_STR, ",") |
'loop through array |
Dim x As Integer |
For x = 0 To (banned_sources_ARRAY.Length - 1) |
For Each node As RadTreeNode In BannedSourcesTree.Nodes |
If node.Value.ToString = banned_sources_ARRAY(x).ToString().Trim Then node.Checked = True |
Next |
Next x |
End If |
End Sub |
0
Accepted

Shinu
Top achievements
Rank 2
answered on 05 Feb 2009, 10:14 AM
Hi Shawn,
Give a try with the following approach and see whether it is working.
VB:
Thanks
Shinu
Give a try with the following approach and see whether it is working.
VB:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) |
If (TypeOf e.Item Is GridEditFormItem) AndAlso (e.Item.IsInEditMode) AndAlso (Not e.Item.OwnerTableView.IsItemInserted) Then |
Dim editFormItem As GridEditFormItem = TryCast(e.Item, GridEditFormItem) |
'accessing banned sources treeview |
Dim BannedSourcesTree As RadTreeView = DirectCast(editFormItem.FindControl("tree_banned_sources"), RadTreeView) |
'accessing parent item |
Dim dataItem As GridDataItem = editFormItem.ParentItem |
Dim banned_sources_STR As String = dataItem("banned_sources").Text.ToString() |
Dim banned_sources_ARRAY As Array = Strings.Split(banned_sources_STR, ",") |
'loop through array |
Dim x As Integer = 0 |
For x = 0 To (banned_sources_ARRAY.Length - 1) |
For Each node As RadTreeNode In BannedSourcesTree.Nodes |
If node.Value.ToString = banned_sources_ARRAY(x).ToString().Trim Then |
node.Checked = True |
End If |
Next |
Next |
End If |
End Sub |
Thanks
Shinu
0

Shawn
Top achievements
Rank 1
answered on 05 Feb 2009, 01:57 PM
That's it - thank you!
0

Shawn
Top achievements
Rank 1
answered on 05 Feb 2009, 11:20 PM
How do I get the value of checked nodes in a grid's UpdateCommand?
I want the values to be in a string like: "5,61,64,91,137,139,161"
I want the values to be in a string like: "5,61,64,91,137,139,161"
Dim banned_sources As String = (CType(editedItem.FindControl("tree_banned_sources"), RadTreeView)).SelectedNodes.ToString() |
0
Accepted

Shinu
Top achievements
Rank 2
answered on 06 Feb 2009, 05:58 AM
Hi Shawn,
Here is the code snippet that performs the desired operation.
VB:
Thanks
Shinu
Here is the code snippet that performs the desired operation.
VB:
Protected Sub RadGrid1_UpdateCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) |
Dim radTree As RadTreeView = DirectCast(e.Item.FindControl("RadTreeView1"), RadTreeView) |
Dim nodeVal As String = String.Empty |
For Each node As RadTreeNode In radTree.Nodes |
If node.Checked Then |
nodeVal += node.Index.ToString() & "," |
End If |
Next |
Dim newNodeVal As String = nodeVal.TrimEnd(","c) |
'Perform the update operation here |
End Sub |
Thanks
Shinu