New to Telerik UI for ASP.NET AJAXStart a free 30-day trial

Using FormTemplate/UserControl

This article will introduce you to how you can proceed when updating values in RadTreeList using FormTemplate and WebUserControl edit forms. Generally, the approach is the same as when an insert operation takes place - you need to get hold of the respective edit form and then use theFindControl(controlID) method to access the controls used for editing values.

Updating values using FormTemplate

Once the UpdateCommand event of RadTreeList is fired, you can access the TreeListEditFormItem through the event arguments (e.Item).Now you only need to use the FindControl(controlId) method and extract the values from the respective controls.

ASPNET
<telerik:RadTreeList RenderMode="Lightweight" ID="RadTreeList1" runat="server" DataKeyNames="EmployeeID" ParentDataKeyNames="ReportsTo"
	AutoGenerateColumns="false" DataSourceID="SqlDataSource1" OnUpdateCommand="RadTreeList1_UpdateCommand">
	<Columns>
		<telerik:TreeListBoundColumn DataField="EmployeeID" HeaderText="EmployeeID" UniqueName="EmployeeID"
			ReadOnly="true" />
		<telerik:TreeListBoundColumn DataField="LastName" HeaderText="LastName" UniqueName="LastName" />
		<telerik:TreeListBoundColumn DataField="FirstName" HeaderText="FirstName" UniqueName="FirstName" />
		<telerik:TreeListBoundColumn DataField="HomePhone" HeaderText="HomePhone" UniqueName="HomePhone" />
		<telerik:TreeListDateTimeColumn DataField="HireDate" HeaderText="HireDate" UniqueName="HireDate" />
		<telerik:TreeListBoundColumn DataField="ReportsTo" HeaderText="ReportsTo" UniqueName="ReportsTo" ReadOnly="true" />
		<telerik:TreeListEditCommandColumn UniqueName="EditColumn" />
	</Columns>
	<EditFormSettings EditFormType="Template">
		<FormTemplate>
			<table>
				<tr>
					<td>
						FirstName:
					</td>
					<td>
						<asp:TextBox ID="TextBox1" Text='<%# Bind("FirstName") %>' runat="server">
						</asp:TextBox>
					</td>
				</tr>
				<tr>
					<td>
						Last Name:
					</td>
					<td>
						<asp:TextBox ID="TextBox2" Text='<%# Bind("LastName") %>' runat="server">
						</asp:TextBox>
					</td>
				</tr>
				<tr>
					<td>
						Home Phone:
					</td>
					<td>
						<telerik:RadMaskedTextBox RenderMode="Lightweight" ID="RadMaskedTextBox1" runat="server" SelectionOnFocus="SelectAll"
							TextWithLiterals='<%# Bind("HomePhone") %>'  Mask="(###) ###-####">
						</telerik:RadMaskedTextBox>
					</td>
				</tr>
				<tr>
					<td>
						Hire Date:
					</td>
					<td>
						<telerik:RadDatePicker RenderMode="Lightweight" ID="RadDatePicker1" DbSelectedDate='<%# Bind("HireDate") %>'
							runat="server">
						</telerik:RadDatePicker>
					</td>
				</tr>
			</table>
			<asp:Button ID="btnUpdate" Text="Update" runat="server" CommandName="Update">
			</asp:Button>&nbsp;
			<asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False"
				CommandName="Cancel"></asp:Button>
		</FormTemplate>
	</EditFormSettings>
</telerik:RadTreeList>

Updating values using WebUserControl

This is also identical with inserting values using a WebUserControl. Once you get a reference to the user control, the FindControl(controlId) method comes to help.Here follows an example of how you can implement the approach for manual extraction of values.

ASPNET
<telerik:RadTreeList RenderMode="Lightweight" ID="RadTreeList2" runat="server" DataKeyNames="EmployeeID" ParentDataKeyNames="ReportsTo"
AutoGenerateColumns="false" EditMode="EditForms" DataSourceID="SqlDataSource1" OnUpdateCommand="RadTreeList2_UpdateCommand">
	<Columns>
		<telerik:TreeListBoundColumn DataField="EmployeeID" HeaderText="EmployeeID" UniqueName="EmployeeID"
			ReadOnly="true" />
		<telerik:TreeListBoundColumn DataField="LastName" HeaderText="LastName" UniqueName="LastName" />
		<telerik:TreeListBoundColumn DataField="FirstName" HeaderText="FirstName" UniqueName="FirstName" />
		<telerik:TreeListBoundColumn DataField="HomePhone" HeaderText="HomePhone" UniqueName="HomePhone" />
		<telerik:TreeListDateTimeColumn DataField="HireDate" HeaderText="HireDate" UniqueName="HireDate" />
		<telerik:TreeListBoundColumn DataField="ReportsTo" HeaderText="ReportsTo" UniqueName="ReportsTo" ReadOnly="true" />
		<telerik:TreeListEditCommandColumn UniqueName="EditColumn" />
	</Columns>
	<EditFormSettings EditFormType="WebUserControl" UserControlPath="~/WebUserControl.ascx">
	</EditFormSettings>
</telerik:RadTreeList>

Again, you can configure the user control to implement the IBindable interface in order for the RadTreeList to be able to extract values:

ASPNET
<table>
	<tr>
		<td>
			FirstName:
		</td>
		<td>
			<asp:TextBox ID="TextBox1" Text='<%# DataBinder.Eval( Container, "DataItem.FirstName") %>'
				runat="server">
			</asp:TextBox>
		</td>
	</tr>
	<tr>
		<td>
			Last Name:
		</td>
		<td>
			<asp:TextBox ID="TextBox2" Text='<%# DataBinder.Eval( Container, "DataItem.LastName") %>'
				runat="server">
			</asp:TextBox>
		</td>
	</tr>
	<tr>
		<td>
			Home Phone:
		</td>
		<td>
			<telerik:RadMaskedTextBox RenderMode="Lightweight" ID="RadMaskedTextBox1" runat="server" SelectionOnFocus="SelectAll"
				TextWithLiterals='<%# DataBinder.Eval( Container, "DataItem.HomePhone") %>' Mask="(###) ###-####">
			</telerik:RadMaskedTextBox>
		</td>
	</tr>
	<tr>
		<td>
			Hire Date:
		</td>
		<td>
			<telerik:RadDatePicker RenderMode="Lightweight" ID="RadDatePicker1" DbSelectedDate='<%# DataBinder.Eval( Container, "DataItem.HireDate") %>'
				runat="server">
			</telerik:RadDatePicker>
		</td>
	</tr>
</table>
<asp:Button ID="btnUpdate" Text='<%# (Container is TreeListEditFormInsertItem) ? "Insert" : "Update" %>'
	runat="server" CommandName='<%# (Container is TreeListEditFormInsertItem) ? "PerformInsert" : "Update" %>'>
</asp:Button>&nbsp;
<asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="False"
	CommandName="Cancel"></asp:Button>