Hi,
I made it to add userControl in a tree, but just using serverside, not page methods.
But now I have another issue. The usercontrol is a grid, and if I select another page from grid or click on edit link from grid, the grid disappears, even that I put the grid in radAjaxPanel. I want that just the grid to refresh if I want to edit a row.
Here is my code:
Default.aspx
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadRootNodes(RadTreeView1, TreeNodeExpandMode.ServerSide);
}
}
private static void LoadRootNodes(RadTreeView treeView, TreeNodeExpandMode expandMode)
{
DataTable data = GetData(new SqlCommand("SELECT * FROM ProductCategories WHERE ParentId IS NULL"));
foreach (DataRow row in data.Rows)
{
RadTreeNode node = new RadTreeNode();
node.Text = row["Title"].ToString();
node.Value = row["CategoryId"].ToString();
node.Attributes["isLast"] = row["IsLast"].ToString();
node.ExpandMode = expandMode;
treeView.Nodes.Add(node);
}
}
protected void RadTreeView1_NodeExpand(object sender, RadTreeNodeEventArgs e)
{
DataTable data = GetChildNodes(e.Node.Value);
bool isLast = Convert.ToBoolean(e.Node.Attributes["isLast"].ToString());
if (!isLast)
{
foreach (DataRow row in data.Rows)
{
RadTreeNode node = new RadTreeNode();
node.Text = row["Title"].ToString();
node.Value = row["CategoryId"].ToString();
node.Attributes["isLast"] = row["IsLast"].ToString();
if (Convert.ToInt32(row["ChildrenCount"]) > 0)
{
node.ExpandMode = TreeNodeExpandMode.ServerSide;
}
e.Node.Nodes.Add(node);
}
}
else
{
Control myControl = LoadControl("Grid.ascx");
RadTreeNode newNode = new RadTreeNode();
newNode.Value = RadTreeView1.Nodes.Count.ToString();
newNode.Attributes["isLast"] = "False";
newNode.ExpandMode = TreeNodeExpandMode.ServerSide;
myControl.ID = "ucSection";
newNode.Controls.Add(myControl);
e.Node.Expanded = true;
e.Node.Nodes.Add(newNode);
}
}
And the UserControl is:
<telerik:RadAjaxManagerProxy ID="radAjaxProxy" runat="server" />
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" runat="server" />
<telerik:RadAjaxPanel runat="server" ID="radAjaxPanel" LoadingPanelID= "LoadingPanel1">
<telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0"
DataSourceID="SqlDataSource1" GridLines="None"
AutoGenerateEditColumn="True" PageSize="3">
<MasterTableView AutoGenerateColumns="False" DataKeyNames="CategoryId" DataSourceID="SqlDataSource1">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="CategoryId" DataType="System.Int64" FilterControlAltText="Filter CategoryId column"
HeaderText="CategoryId" ReadOnly="True" SortExpression="CategoryId" UniqueName="CategoryId">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="ParentId" DataType="System.Int64" FilterControlAltText="Filter ParentId column"
HeaderText="ParentId" SortExpression="ParentId" UniqueName="ParentId">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Title" FilterControlAltText="Filter Title column"
HeaderText="Title" SortExpression="Title" UniqueName="Title">
</telerik:GridBoundColumn>
<telerik:GridCheckBoxColumn DataField="IsLast" DataType="System.Boolean" FilterControlAltText="Filter IsLast column"
HeaderText="IsLast" SortExpression="IsLast" UniqueName="IsLast">
</telerik:GridCheckBoxColumn>
</Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column">
</EditColumn>
</EditFormSettings>
</MasterTableView>
<FilterMenu EnableImageSprites="False">
</FilterMenu>
</telerik:RadGrid>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TELERIKConnectionString %>"
SelectCommand="SELECT * FROM [ProductCategories]"></asp:SqlDataSource>
</telerik:RadAjaxPanel>
Thanks a lot,
Timo