or
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanelDefault"
runat
=
"server"
>
</
telerik:RadAjaxLoadingPanel
>
<
fieldset
>
<
div
>
<
telerik:RadTreeView
ID
=
"TreeViewUnits"
runat
=
"server"
OnNodeExpand
=
"TreeViewUnits_NodeExpand"
onnodecreated
=
"TreeViewUnits_NodeCreated"
>
<
NodeTemplate
>
<
asp:Literal
ID
=
"LtrName"
runat
=
"server"
Text
=
""
></
asp:Literal
>
<%# DataBinder.Eval(Container, "Text") %>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"ComboTags"
Height
=
"190px"
Width
=
"420px"
EnableLoadOnDemand
=
"true"
HighlightTemplatedItems
=
"true"
OnDataBound
=
"ComboTags_DataBound"
OnItemDataBound
=
"ComboTags_ItemDataBound"
OnItemsRequested
=
"ComboTags_ItemsRequested"
>
<
HeaderTemplate
>
<
ul
>
<
li
class
=
"col1"
>Selected</
li
>
<
li
class
=
"col2"
>Tag Name</
li
>
</
ul
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
ul
>
<
li
class
=
"col1"
>
<
asp:CheckBox
ID
=
"CheckTag"
runat
=
"server"
AutoPostBack
=
"True"
oncheckedchanged
=
"CheckTag_CheckedChanged"
/></
li
>
<
li
class
=
"col2"
>
<%# DataBinder.Eval(Container.DataItem, "Name") %></
li
>
</
ul
>
</
ItemTemplate
>
<
FooterTemplate
>
A total of
<
asp:Literal
runat
=
"server"
ID
=
"LtrComboTagsCount"
/>
items
</
FooterTemplate
>
</
telerik:RadComboBox
>
</
NodeTemplate
>
</
telerik:RadTreeView
>
</
div
>
</
fieldset
>
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
MyDataBindSections(TreeViewUnits);
}
RadAjaxManager ajax = RadAjaxManager.GetCurrent(
this
.Page);
ajax.AjaxSettings.AddAjaxSetting(TreeViewUnits, TreeViewUnits, RadAjaxLoadingPanelDefault);
}
private
void
MyDataBindSections(RadTreeView radTree)
{
List<Scope> scopes = SessionHandler.UserSession.Scopes;
radTree.Nodes.Clear();
foreach
(Scope scope
in
scopes)
{
RadTreeNode node = GetUnitNode(scope.Unit,
false
);
radTree.Nodes.Add(node);
}
}
public
static
RadTreeNode GetUnitNode(Unit unit,
bool
expand)
{
RadTreeNode unitNode =
new
RadTreeNode();
unitNode.Text = unit.Name;
unitNode.Attributes.Add(
"NodeType"
,
"Unit"
);
RadTreeNode unitTagNode =
new
RadTreeNode();
unitTagNode.Text =
"Tags"
;
unitTagNode.Attributes.Add(
"NodeType"
,
"UnitTag"
);
unitTagNode.Attributes.Add(
"UnitId"
, unit.Id.ToString());
unitNode.Nodes.Add(unitTagNode);
if
(expand)
{
AddChildUnits(unitNode, unit);
unitNode.ExpandMode = TreeNodeExpandMode.ClientSide;
}
else
{
unitNode.ExpandMode = TreeNodeExpandMode.ServerSide;
}
return
unitNode;
}
public
static
void
AddChildUnits(RadTreeNode node, Unit unit)
{
List<Unit> childUnits = unit.ChildUnits.ToList();
RadTreeNode unitNodeFolder =
new
RadTreeNode();
unitNodeFolder.Text =
"Subunits( "
+ unit.ChildUnits.Count +
" )"
;
unitNodeFolder.Attributes.Add(
"NodeType"
,
"UnitFolder"
);
if
(childUnits.Count > 0)
{
unitNodeFolder.Expanded =
true
;
}
node.Nodes.Add(unitNodeFolder);
foreach
(Unit childUnit
in
childUnits)
{
unitNodeFolder.Nodes.Add(GetUnitNode(childUnit,
false
));
}
}
protected
void
TreeViewUnits_NodeExpand(
object
sender, RadTreeNodeEventArgs e)
{
RadTreeNode node = e.Node;
if
(node.Attributes[
"NodeType"
] !=
null
)
{
if
(node.Attributes[
"NodeType"
] ==
"Unit"
)
{
UnitService service =
new
UnitService();
Unit unit = service.GetUnit(
int
.Parse(node.Value));
if
(!unit.IsLeaf)
{
AddChildUnits(node, unit);
}
}
node.Expanded =
true
;
}
}
protected
void
ComboTags_DataBound(
object
sender, EventArgs e)
{
RadComboBox comboTags = sender
as
RadComboBox;
((System.Web.UI.WebControls.Literal)comboTags.Footer.FindControl(
"LtrComboTagsCount"
)).Text =
Convert.ToString(comboTags.Items.Count);
}
protected
void
ComboTags_ItemDataBound(
object
sender, Telerik.Web.UI.RadComboBoxItemEventArgs e)
{
System.Web.UI.WebControls.CheckBox check =
e.Item.FindControl(
"CheckTag"
)
as
System.Web.UI.WebControls.CheckBox;
check.Attributes[
"TagId"
] = ((Tag)e.Item.DataItem).Id.ToString();
}
protected
void
ComboTags_ItemsRequested(
object
sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
UnitService service =
new
UnitService();
RadComboBox comboTags = sender
as
RadComboBox;
int
unitId = 0;
//Find unit id
comboTags.DataSource = service.GetTags(unitId);
comboTags.DataBind();
}
protected
void
TreeViewUnits_NodeCreated(
object
sender, RadTreeNodeEventArgs e)
{
if
(e.Node.Attributes[
"NodeType"
] ==
"UnitTag"
)
{
e.Node.FindControl(
"ComboTags"
).Visible =
true
;
}
else
{
e.Node.FindControl(
"ComboTags"
).Visible =
false
;
}
e.Node.FindControl(
"LtrName"
).Visible =
true
;
((System.Web.UI.WebControls.Literal)e.Node.FindControl(
"LtrName"
)).Text = e.Node.Text;
}
protected
void
CheckTag_CheckedChanged(
object
sender, EventArgs e)
{
System.Web.UI.WebControls.CheckBox check =
sender
as
System.Web.UI.WebControls.CheckBox;
int
unitId = 0;
//Find unit id
int
tagId =
int
.Parse(check.Attributes[
"TagId"
]);
UnitService service =
new
UnitService();
if
(check.Checked)
{
//service.AddTag(unitId, tagId);
}
else
{
//service.RemoveTag(unitId, tagId);
}
}
Protected
Sub
RadGrid1_NeedDataSource(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridNeedDataSourceEventArgs)
Handles
RadGrid1.NeedDataSource
Dim
db
As
New
TrackerDataContext
db.Log =
New
System.Diagnostics.DebuggerWriter
Dim
query = From p
In
db.posts
Where p.parentid = 0
Select
p
If
String
.IsNullOrWhiteSpace(RadGrid1.MasterTableView.FilterExpression) =
False
Then
query = query.Where(RadGrid1.MasterTableView.FilterExpression)
End
If
For
Each
exp
As
GridSortExpression
In
RadGrid1.MasterTableView.SortExpressions
query = query.OrderBy(
String
.Format(
"{0} {1}"
, exp.FieldName, exp.SortOrder.ToString))
Next
Dim
start
As
Integer
= RadGrid1.CurrentPageIndex * RadGrid1.PageSize
Dim
max
As
Integer
= RadGrid1.PageSize
RadGrid1.AllowCustomPaging =
True
'we always need count
RadGrid1.VirtualItemCount = query.Count
If
isGrouping
Or
RadGrid1.MasterTableView.GroupByExpressions.Count > 0
Then
start = 0
max = RadGrid1.VirtualItemCount
RadGrid1.AllowCustomPaging =
False
End
If
RadGrid1.DataSource = query.Skip(start).Take(max)
End
Sub
Private
isGrouping
As
Boolean
=
False
Protected
Sub
RadGrid1_GroupsChanging(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.GridGroupsChangingEventArgs)
Handles
RadGrid1.GroupsChanging
isGrouping =
True
If
e.Action = GridGroupsChangingAction.Ungroup
AndAlso
RadGrid1.MasterTableView.GroupByExpressions.Count = 1
Then
isGrouping =
False
End
If
End
Sub