<
telerik:RadPanelBar
ID
=
"RadPanelBar1"
Runat
=
"server"
>
<
Items
>
<
telerik:RadPanelItem
runat
=
"server"
Text
=
"Root RadPanelItem1"
>
</
telerik:RadPanelItem
>
<
telerik:RadPanelItem
runat
=
"server"
Text
=
"Root RadPanelItem2"
Selected
=
"True"
>
</
telerik:RadPanelItem
>
<
telerik:RadPanelItem
runat
=
"server"
Text
=
"Root RadPanelItem3"
>
<
ContentTemplate
>
<
asp:FormView
ID
=
"FormView1"
runat
=
"server"
DataSourceID
=
"LinqDataSourcePayee"
DataKeyNames
=
"id"
>
<
EditItemTemplate
>
firstName:
<
asp:TextBox
ID
=
"firstNameTextBox"
runat
=
"server"
Text='<%# Bind("firstName") %>' />
<
br
/>
lastName:
<
asp:TextBox
ID
=
"lastNameTextBox"
runat
=
"server"
Text='<%# Bind("lastName") %>' />
<
br
/>
<
asp:LinkButton
ID
=
"UpdateButton"
runat
=
"server"
CausesValidation
=
"True"
CommandName
=
"Update"
Text
=
"Update"
/>
<
asp:LinkButton
ID
=
"UpdateCancelButton"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
Text
=
"Cancel"
/>
</
EditItemTemplate
>
<
ItemTemplate
>
firstName:
<
asp:Label
ID
=
"firstNameLabel"
runat
=
"server"
Text='<%# Bind("firstName") %>' />
<
br
/>
lastName:
<
asp:Label
ID
=
"lastNameLabel"
runat
=
"server"
Text='<%# Bind("lastName") %>' />
<
asp:LinkButton
ID
=
"EditButton"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Edit"
Text
=
"Edit"
/>
</
ItemTemplate
>
</
asp:FormView
>
</
ContentTemplate
>
</
telerik:RadPanelItem
>
</
Items
>
</
telerik:RadPanelBar
>
protected
void
Page_Load(
object
sender, EventArgs e)
{
RadPanelBar1.Items[0].Visible = RadPanelBar1.Items[0].Enabled =
false
;
}
The data binding event in this code isn't working any longer. I was testing a custom node template and using the code from this page (add and edit templates Runtime), but then removed all the code specific to the custom node template. At that point, the data stopped binding. I have added the code back, moved all of it to another page, but the data binding event doesn't seem to fire. Even with all the test code from the linked page above in my page, if I set a breakpoint in the DataBinding function it never gets hit. If I manually place a RadTreeView on the .aspx page it will display, but anything set on the server side will not.
I have checked to make sure List used to populate the tree has data, and this line (radTree.DataSource = treeNodes) works correctly. But the databind is still failing.
Any suggestions?
Thanks,
Peter
namespace FQRSurvey.Controls |
{ |
public partial class TreeViewControl : System.Web.UI.UserControl |
{ |
protected void Page_Load(object sender, EventArgs e) |
{ |
if (!this.Page.IsPostBack) |
{ |
//load tree view |
Survey survey = SurveyController.GetSurveyByID(new Guid("6C685FBA-1380-47B7-A911-DC89AF9479CF")); |
CreateRadTree(survey, questionTree); |
} |
} |
protected override void OnInit(EventArgs e) |
{ |
questionTree.NodeTemplate = new SectionTemplate(); |
//questionTree.NodeTemplate = new QuestionTemplate(); |
//questionTree.NodeTemplate = new AnswerTemplate(); |
base.OnInit(e); |
} |
protected void RadTreeView1_HandleDrop(object sender, RadTreeNodeDragDropEventArgs e) |
{ |
RadTreeNode sourceNode = e.SourceDragNode; |
RadTreeNode destNode = e.DestDragNode; |
RadTreeViewDropPosition dropPosition = e.DropPosition; |
if (destNode != null) |
{ |
if (sourceNode.TreeView.SelectedNodes.Count <= 1) |
{ |
if (!sourceNode.IsAncestorOf(destNode)) |
{ |
sourceNode.Owner.Nodes.Remove(sourceNode); |
destNode.Nodes.Add(sourceNode); |
} |
} |
destNode.Expanded = true; |
sourceNode.TreeView.ClearSelectedNodes(); |
} |
} |
private void CreateRadTree(Survey survey, RadTreeView radTree) |
{ |
radTree.NodeTemplate = new SectionTemplate(); |
if (!survey.Sections.Count.Equals(0)) |
{ |
List<TreeNode1> treeNodes = new List<TreeNode1>(); |
Sections sections = survey.Sections; |
//Loop through Sections |
for (int i = 0; i < sections.Count; i++) |
{ |
Section section = sections[i]; |
//Create Section Node |
TreeNode1 sNode = new TreeNode1(section.SectionID.ToString(), String.Empty, section.SectionTitle, section.SectionStatus); |
treeNodes.Add(sNode); |
//Get Questions |
if (section.FirstQuestion != null) |
{ |
Question q = section.FirstQuestion; |
string prevNode = String.Empty; |
if (q.PrevAnswer == null) prevNode = sNode.ID; |
else prevNode = q.PrevAnswer.AnswerID.ToString(); |
//Create Question Node |
TreeNode1 qNode = new TreeNode1("q" + q.FriendlyID, prevNode, q.QuestionText, SurveyStatus.Active); |
//Create Answer Group |
treeNodes.Add(qNode); |
} |
} |
radTree.DataTextField = "Text"; |
radTree.DataFieldID = "ID"; |
radTree.DataFieldParentID = "ParentID"; |
radTree.DataSource = treeNodes; |
radTree.DataBind(); |
} |
} |
} |
internal class TreeNode1 |
{ |
private string _id; |
private string _text; |
private SurveyStatus _status; |
private string _parentID; |
public string ID |
{ |
get { return _id; } |
set { _id = value; } |
} |
public string ParentID |
{ |
get { return _parentID; } |
set { _parentID = value; } |
} |
public string Text |
{ |
get { return _text; } |
set { _text = value; } |
} |
public SurveyStatus Status |
{ |
get { return _status; } |
set { _status = value; } |
} |
public TreeNode1(string id, string parentID, string text, SurveyStatus status) |
{ |
_id = id; |
_text = text; |
_status = status; |
_parentID = parentID; |
} |
} |
class SectionTemplate : ITemplate |
{ |
public void InstantiateIn(Control container) |
{ |
Label label1 = new Label(); |
label1.Font.Size = 15; |
label1.DataBinding += new EventHandler(label1_DataBinding); |
container.Controls.Add(label1); |
} |
private void label1_DataBinding(object sender, EventArgs e) |
{ |
Label target = (Label)sender; |
RadTreeNode node = (RadTreeNode)target.BindingContainer; |
string nodeText = (string)DataBinder.Eval(node, "Text"); |
target.Text = nodeText; |
} |
} |
<
telerik:RadToolBar
ID
=
"RadTool"
runat
=
"server"
AutoPostBack
=
"true"
onbuttonclick
=
"RadTool_ButtonClick"
>
<
Items
>
<
telerik:RadToolBarButton
runat
=
"server"
Text
=
"Edit"
></
telerik:RadToolBarButton
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"CheckBox1"
runat
=
"server"
/>
</
ItemTemplate
>
</
telerik:RadToolBarButton
>
</
Items
>
</
telerik:RadToolBar
>
Public Sub CheckBoxParent(ByVal sender As System.Object, ByVal e As System.EventArgs)
For Each item As GridDataItem In rParent.Items
Dim myCheckbox As CheckBox = DirectCast(item.FindControl("CheckBoxParent"), CheckBox)
Dim hAttributeID As HiddenField = DirectCast(dataItem.FindControl("hAttributeID"), HiddenField)
' Child radGrid
Dim dg As Telerik.Web.UI.RadGrid = item.FindControl("radChild")
' trying to Loop through each DataGridItem of the child grid
For Each dgItem As GridDataItem In dg.Items
Next
Next
End Sub
<
telerik:RadGrid
id
=
"rParent"
runat
=
"server"
AllowMultiRowSelection
=
"True"
>
<
MasterTableView
ShowHeader
=
"true"
AutoGenerateColumns
=
"false"
>
<
Columns
>
<
telerik:GridTemplateColumn
>
<
HeaderTemplate
></
HeaderTemplate
>
<
ItemTemplate
>
<
asp:CheckBox
id
=
"CheckBoxParent"
OnCheckedChanged
=
"findScore"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
<%# DataBinder.Eval(Container.DataItem, "KeyID") %>
<
asp:HiddenField
ID
=
"hAttributeID"
runat
=
"Server"
Value='<%# DataBinder.Eval(Container.DataItem, "AttributeID") %>' />
<
telerik:RadGrid
id
=
"rChild"
runat
=
"server"
>
<
MasterTableView
ShowHeader
=
"false"
AutoGenerateColumns
=
"false"
>
<
Columns
>
<
telerik:GridTemplateColumn
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "Description") %>
<%# DataBinder.Eval(Container.DataItem, "AttributeID") %>
<
asp:CheckBox
id
=
"CheckBoxChild"
OnCheckedChanged
=
"findScore"
AutoPostBack
=
"True"
runat
=
"server"
></
asp:CheckBox
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
<
ClientSettings
EnableRowHoverStyle
=
"false"
EnablePostBackOnRowClick
=
"true"
/>
</
telerik:RadGrid
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>