Hello,
This code below is from one of demo code from
TreeList - Forum with External Edit Form
ExpandItemToLevel() is using 50 which seems a random number!!
is there a way to find how many the level a item has to expand??
Thanks!!
case
RadTreeList.ExpandCollapseCommandName:
//if the command is fired for a root item by the LinkButton inside it, all child items should be expanded
if
((e.Item
as
TreeListDataItem).HierarchyIndex.NestedLevel == 0 && e.CommandArgument.ToString() ==
"ExpandAll"
)
{
e.Canceled =
true
;
if
(!(e.Item
as
TreeListDataItem).Expanded)
{
ForumBoard.ExpandItemToLevel((e.Item
as
TreeListDataItem), 50);
// 50 is a random number as Level to exand all I assume
// is there a way to find how many level it has to expand??
}
else
{
ForumBoard.CollapseAllItems();
}
}
EditFormPanel.Visible =
false
;
break
I have an issue with radgrid of telerik control in our application. When I try to open radgrid's records to view their full detail (In Edit Mode) I am unable to tap on any rows, it's the same on iPad/iPhone in Chrome and safari browsers.
To open Radgrid's recored in Edit Mode I use the client side rowclick event of radgrid. I also use ajax on this page.
My RowSelecting event is as follows :-
function RowSelecting(sender, eventArgs) {
var grid = $find("<%= RadGrid1.ClientID %>");
if (eventArgs.get_tableView().get_name() == "RadGrid") {
if (!grid.get_masterTableView().get_dataItems()[eventArgs.get_itemIndexHierarchical()].get_isInEditMode()) {
grid.get_masterTableView().editItem(eventArgs.get_itemIndexHierarchical());
}
}
}
http://demos.telerik.com/aspnet-ajax/treeview/examples/programming/addremovedisable/defaultcs.aspx
This allows click events for adding and deleting nodes in a treeview, and for the treeview to be updated without screen flicker.
However, the demo code doesn't work for me.
For example, if I try to delete a node by clicking on the Delete Node button it doesn't even fire the DeleteButton_Click event. If I remove the reference to the DeleteButton in the RadAjaxManager, then the event fires, but I then get the screen flicker when the tree is redrawn.
The code is below:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.User.master" EnableViewState="true" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit"%>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"HeadContent"
Runat
=
"Server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
EnableViewState
=
"true"
ContentPlaceHolderID
=
"MainContent"
Runat
=
"Server"
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
telerik:RadSkinManager
ID
=
"QsfSkinManager"
runat
=
"server"
ShowChooser
=
"true"
/>
<
telerik:RadFormDecorator
ID
=
"QsfFromDecorator"
runat
=
"server"
DecoratedControls
=
"All"
EnableRoundedCorners
=
"false"
/>
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"DisableButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadTreeView1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
</
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"EnableAllButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadTreeView1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
</
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"DeleteButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadTreeView1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
</
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"AddButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadTreeView1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
>
</
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"RadAjaxLoadingPanel1"
>
</
telerik:RadAjaxLoadingPanel
>
<
ul
class
=
"qsfexAvailableActions"
>
<
li
>
<
asp:Button
ID
=
"DisableButton"
runat
=
"server"
OnClick
=
"DisableButton_Click"
ValidationGroup
=
"DisableRequiresSelection"
Text
=
"Disable selected node"
></
asp:Button
>
<
asp:RequiredFieldValidator
ID
=
"RequiredFieldValidator2"
runat
=
"server"
ErrorMessage
=
"Select a node first."
ControlToValidate
=
"RadTreeView1"
Display
=
"Dynamic"
ValidationGroup
=
"DisableRequiresSelection"
CssClass
=
"validator"
></
asp:RequiredFieldValidator
>
</
li
>
<
li
>
<
asp:Button
ID
=
"EnableAllButton"
runat
=
"server"
CausesValidation
=
"False"
OnClick
=
"EnableAll_Button"
Text
=
"Enable all nodes"
></
asp:Button
>
</
li
>
<
li
>
<
asp:Button
ID
=
"DeleteButton"
runat
=
"server"
OnClick
=
"DeleteButton_Click"
ValidationGroup
=
"DeleteRequiresSelection"
Text
=
"Delete selected node"
></
asp:Button
>
<
asp:RequiredFieldValidator
ID
=
"RequiredFieldValidator3"
runat
=
"server"
ErrorMessage
=
"Select a node first."
Display
=
"Dynamic"
ControlToValidate
=
"RadTreeView1"
ValidationGroup
=
"DeleteRequiresSelection"
CssClass
=
"validator"
></
asp:RequiredFieldValidator
>
</
li
>
<
li
>
<
telerik:RadTextBox
runat
=
"Server"
ID
=
"NodeTextBox"
EmptyMessage
=
"Enter node text"
>
</
telerik:RadTextBox
>
<
asp:RequiredFieldValidator
ID
=
"RequiredFieldValidator1"
runat
=
"server"
ErrorMessage
=
"Text is required"
Display
=
"Dynamic"
ControlToValidate
=
"NodeTextBox"
ValidationGroup
=
"TextRequired"
CssClass
=
"validator"
></
asp:RequiredFieldValidator
>
</
li
>
<
li
>
<
asp:Button
ID
=
"AddButton"
runat
=
"server"
OnClick
=
"AddButton_Click"
Text
=
"Add new node"
></
asp:Button
>
</
li
>
</
ul
>
<
telerik:RadTreeView
ID
=
"RadTreeView1"
runat
=
"server"
Height
=
"280px"
Width
=
"300px"
>
</
telerik:RadTreeView
>
</
asp:Content
>
using
System;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
public
partial
class
Test : System.Web.UI.Page
{
private
void
Page_Load(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
RadTreeView1.LoadContentFile(
"tree.xml"
);
}
}
protected
void
DisableButton_Click(
object
sender, EventArgs e)
{
Page.Validate(
"DisableRequiresSelection"
);
if
(Page.IsValid)
{
RadTreeView1.SelectedNode.Enabled =
false
;
RadTreeView1.SelectedNode.Selected =
false
;
}
}
protected
void
EnableAll_Button(
object
sender, EventArgs e)
{
foreach
(RadTreeNode node
in
RadTreeView1.GetAllNodes())
{
node.Enabled =
true
;
}
}
protected
void
DeleteButton_Click(
object
sender, EventArgs e)
{
Page.Validate(
"DeleteRequiresSelection"
);
if
(Page.IsValid)
{
RadTreeView1.SelectedNode.Remove();
}
}
protected
void
AddButton_Click(
object
sender, EventArgs e)
{
Page.Validate(
"TextRequired"
);
if
(Page.IsValid)
{
IRadTreeNodeContainer target = RadTreeView1;
if
(RadTreeView1.SelectedNode !=
null
)
{
RadTreeView1.SelectedNode.Expanded =
true
;
target = RadTreeView1.SelectedNode;
}
RadTreeNode addedNode =
new
RadTreeNode(NodeTextBox.Text);
addedNode.Selected =
true
;
target.Nodes.Add(addedNode);
}
}
}
In default.aspx page_load event I load uc1 into the panel:
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
Dim
uc
As
UserControl = Page.LoadControl(
"~/uc1.ascx"
)
pnlGrid.Controls.Add(uc)
End
Sub
<
asp:ObjectDataSource
runat
=
"server"
ID
=
"odsTest"
TypeName
=
"WebApplication2.BL"
EnablePaging
=
"true"
SelectMethod
=
"GetAllTest"
SelectCountMethod
=
"GetTestCount"
MaximumRowsParameterName
=
"maximumRows"
StartRowIndexParameterName
=
"startRowIndex"
></
asp:ObjectDataSource
>
<
asp:Panel
ID
=
"pnlGrid"
runat
=
"server"
>
</
asp:Panel
>
(There are a <asp:Literal> control auto-generated here)
But if panel markup like:
<
asp:Panel
ID
=
"pnlGrid"
runat
=
"server"
></
asp:Panel
>
<
asp:Panel
ID
=
"pnlGrid"
runat
=
"server"
/>