or
<
telerik:RadGrid
ID
=
"RadGrid1"
Width
=
"97%"
AllowPaging
=
"True"
PageSize
=
"15"
runat
=
"server"
AllowSorting
=
"True"
AllowFilteringByColumn
=
"True"
GridLines
=
"None"
>
<
MasterTableView
Width
=
"100%"
AutoGenerateColumns
=
"False"
DataKeyNames
=
"GrowerId"
>
<
Columns
>
<
telerik:GridTemplateColumn
UniqueName
=
"TemplateColumn"
SortExpression
=
"CompanyName"
>
<
HeaderTemplate
>
<
asp:CheckBox
id
=
"headerChkbox"
OnCheckedChanged
=
"chkHeader_CheckedChanged"
AutoPostBack
=
"true"
runat
=
"server"
Text
=
"Select All"
></
asp:CheckBox
>
</
HeaderTemplate
>
var chkHeader = RadGrid1.MasterTableView.GetColumn("headerChkbox").HeaderAbbr = "checkbox";
<
telerik:RadWindowManager
ID
=
"RadWindowManager1"
runat
=
"server"
>
<
Windows
>
<
telerik:RadWindow
ID
=
"RadWindow1"
runat
=
"server"
Modal
=
"true"
"
>
<
ContentTemplate
>
<
asp:Panel
ID
=
"panTest"
runat
=
"server"
>
<
p
>Test</
p
>
</
asp:Panel
>
</
ContentTemplate
>
</
telerik:RadWindow
>
</
Windows
>
</
telerik:RadWindowManager
>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="RadControlsWebApp1.WebForm3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
<
telerik:RadStyleSheetManager
ID
=
"RadStyleSheetManager1"
runat
=
"server"
/>
<
style
type
=
"text/css"
>
body
{
font-family: Arial, Helvetica, Sans-Serif;
font-size: 11pt;
color: Black;
}
div.MasterContainer
{
width: 600px;
height: 400px;
padding: 0px;
margin: auto;
margin-top: 40px;
}
</
style
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
<
Scripts
>
<%--Needed for JavaScript IntelliSense in VS2010--%>
<%--For VS2008 replace RadScriptManager with ScriptManager--%>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</
Scripts
>
</
telerik:RadScriptManager
>
<
script
type
=
"text/javascript"
>
//Put your JavaScript code here.
</
script
>
<
div
class
=
"MasterContainer"
>
<
telerik:RadTabStrip
ID
=
"RadTabStrip1"
runat
=
"server"
MultiPageID
=
"RadMultiPage1"
SelectedIndex
=
"0"
Skin
=
"Hay"
Width
=
"100%"
>
<
Tabs
>
<
telerik:RadTab
runat
=
"server"
Text
=
"Tab1"
Value
=
"Tab1"
Owner
=
"RadTabStrip1"
PageViewID
=
"rpvTab1"
/>
<
telerik:RadTab
runat
=
"server"
Text
=
"Tab2"
Value
=
"Tab2"
Owner
=
"RadTabStrip1"
PageViewID
=
"rpvTab2"
/>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
ID
=
"RadMultiPage1"
runat
=
"server"
SelectedIndex
=
"0"
>
<
telerik:RadPageView
ID
=
"rpvTab1"
runat
=
"server"
Width
=
"100%"
>
<
table
style
=
"padding: 0px; margin: 0px; border-style: none; border-width: 0px; width: 500px;"
>
<
tr
>
<
td
>
Title:
</
td
>
<
td
>
<
telerik:RadTextBox
ID
=
"RadTextBox1"
runat
=
"server"
Enabled
=
"true"
MaxLength
=
"100"
Text
=
"Test"
Width
=
"240px"
>
</
telerik:RadTextBox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Gender:
</
td
>
<
td
>
<
telerik:RadComboBox
ID
=
"RadComboBox1"
runat
=
"server"
EmptyMessage
=
"Choose Gender"
Width
=
"240px"
>
<
Items
>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"Male"
Value
=
"Male"
/>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"Female"
Value
=
"Female"
/>
</
Items
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
</
table
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"rpvTab2"
runat
=
"server"
Width
=
"100%"
>
<
table
style
=
"padding: 0px; margin: 0px; border-style: none; border-width: 0px; width: 500px;"
>
<
tr
>
<
td
>
Title:
</
td
>
<
td
>
<
telerik:RadTextBox
ID
=
"txtTitle"
runat
=
"server"
Enabled
=
"true"
MaxLength
=
"100"
Text
=
"Test"
Width
=
"240px"
>
</
telerik:RadTextBox
>
</
td
>
</
tr
>
<
tr
>
<
td
>
Gender:
</
td
>
<
td
>
<
telerik:RadComboBox
ID
=
"cmbxGender"
runat
=
"server"
EmptyMessage
=
"Choose Gender"
Width
=
"240px"
>
<
Items
>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"Male"
Value
=
"Male"
/>
<
telerik:RadComboBoxItem
runat
=
"server"
Text
=
"Female"
Value
=
"Female"
/>
</
Items
>
</
telerik:RadComboBox
>
</
td
>
</
tr
>
</
table
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
div
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
</
telerik:RadAjaxManager
>
</
form
>
</
body
>
</
html
>
So, I've boiled it down to a simple case that I think captures all the important parts of my implementation. There's a commented section in the code-behind that can be uncommented to enable Load on Demand. I didn't supply any of my futile implementations in TreeView_NodeExpand because none of them have worked. I'm asking for what might go in there to make this example work.
My aspx file is:
<%@ Page AutoEventWireup="true" CodeFile="DefaultCS.aspx.cs"
Inherits="Telerik.Web.Examples.Grid.Integration.GridWithTreeViewComboBoxEditors.DefaultCS"
Language="c#" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
></
head
>
<
body
class
=
"BODY"
>
<
form
runat
=
"server"
id
=
"mainForm"
method
=
"post"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
/>
<
asp:UpdatePanel
RunAt
=
"Server"
> <
ContentTemplate
>
<
telerik:RadGrid
ID
=
"FooGrid"
OnNeedDataSource
=
"FooGrid_NeedDataSource"
OnItemDataBound
=
"FooGrid_ItemDataBound"
AutoGenerateEditColumn
=
"true"
runat
=
"server"
>
<
MasterTableView
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
telerik:RadTreeView
ID
=
"TreeView"
DataTextField
=
"Text"
DataFieldID
=
"Key"
DataFieldParentID
=
"Parent"
DataValueField
=
"Key"
OnNodeExpand
=
"TreeView_NodeExpand"
RunAt
=
"Server"
>
<
NodeTemplate
>
<
telerik:RadButton
ButtonType
=
"ToggleButton"
ToggleType
=
"CheckBox"
AutoPostBack
=
"false"
Checked='<%# Bind("CanView") %>' Text="View" ID="CanViewButton"
RunAt="Server" />
<
telerik:RadButton
ButtonType
=
"ToggleButton"
ToggleType
=
"CheckBox"
AutoPostBack
=
"false"
Text
=
"Alter"
RunAt
=
"Server"
/>
- <%# DataBinder.Eval(Container, "Text") %>
</
NodeTemplate
>
</
telerik:RadTreeView
>
<
telerik:RadButton
Text='<%# (Container is GridEditFormInsertItem) ?
"Insert" : "Update" %>'
CommandName='<%# (Container is GridEditFormInsertItem) ?
"PerformInsert" : "Update" %>' RunAt="Server" />
<
telerik:RadButton
Text
=
"Cancel"
CommandName
=
"Cancel"
RunAt
=
"Server"
/>
</
FormTemplate
>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
ContentTemplate
> </
asp:UpdatePanel
>
</
form
>
</
body
>
</
html
>
And my code-behind is:
using
System.Configuration;
using
System.Data;
using
System.Data.SqlClient;
using
System.Web.UI;
using
Telerik.Web.UI;
using
System;
using
System.Collections.Generic;
namespace
Telerik.Web.Examples.Grid.Integration.GridWithTreeViewComboBoxEditors {
public
partial
class
DefaultCS : Page {
public
void
FooGrid_NeedDataSource(Object sender, GridNeedDataSourceEventArgs e) {
FooGrid.DataSource=
new
GreekGods();
}
public
void
FooGrid_ItemDataBound(Object sender, GridItemEventArgs e) {
GridEditFormItem item=e.Item
as
GridEditFormItem;
if
(item !=
null
&& item.IsInEditMode) {
RadTreeView treeView=item.FindControl(
"TreeView"
)
as
RadTreeView;
if
(treeView !=
null
) {
treeView.DataSource=
new
TreeDataList();
treeView.DataBind();
// To enable Load on Demand, uncomment these lines
// foreach (RadTreeNode pNode in treeView.Nodes) {
// pNode.ExpandMode=TreeNodeExpandMode.ServerSideCallBack;
// pNode.Nodes.Clear();
// }
}
}
}
public
void
TreeView_NodeExpand(Object sender, RadTreeNodeEventArgs e) {
// What can go in here that will allow me to create nodes according to
// the NodeTemplate in the aspx file.
}
}
//////////// From here down is just canned data
public
class
GreekGod {
private
string
name;
public
string
Name {
get
{
return
name; }
set
{ name = value; } }
private
string
description;
public
string
Description {
get
{
return
description; }
set
{ description = value; } }
private
string
romanName;
public
string
RomanName {
get
{
return
romanName; }
set
{ romanName = value; } }
public
GreekGod(
string
name,
string
description,
string
romanName) {
this
.name = name;
this
.description = description;
this
.romanName = romanName;
}
}
public
class
GreekGods : List<GreekGod> {
public
GreekGods() {
this
.Add(
new
GreekGod(
"Aphrodite"
,
"Goddess of love, beauty and fertility"
,
"Venus"
));
this
.Add(
new
GreekGod(
"Apollo"
,
"God of prophesy, music and healing"
,
"Apollo"
));
this
.Add(
new
GreekGod(
"Ares"
,
"God of war"
,
"Mars"
));
}
}
public
class
TreeData {
private
string
key;
public
string
Key {
get
{
return
key; }
set
{ key=value; } }
private
string
text;
public
string
Text {
get
{
return
text; }
set
{ text=value; } }
private
string
parent;
public
string
Parent {
get
{
return
parent; }
set
{ parent=value; } }
private
bool
canView;
public
bool
CanView {
get
{
return
canView; }
set
{ canView=value; } }
public
TreeData(
string
key,
string
text,
string
parent)
{ Key=key; Text=text; Parent=parent; }
}
public
class
TreeDataList: List<TreeData> {
public
TreeDataList() {
Add(
new
TreeData(
"0"
,
"P1"
,
null
));
this
[0].CanView=
true
;
Add(
new
TreeData(
"1"
,
"P1C1"
,
"0"
));
Add(
new
TreeData(
"2"
,
"P2"
,
null
));
Add(
new
TreeData(
"3"
,
"P2C1"
,
"2"
));
Add(
new
TreeData(
"4"
,
"P2C2"
,
"2"
));
Add(
new
TreeData(
"5"
,
"P3"
,
null
));
Add(
new
TreeData(
"6"
,
"P3C1"
,
"5"
));
}
}
}
Thanks.
kd
<
telerik:RadGrid
ID
=
"GridComplianceReport"
Width
=
"100%"
AllowPaging
=
"True"
PageSize
=
"30"
runat
=
"server"
AllowSorting
=
"true"
Visible
=
"false"
OnNeedDataSource
=
"GridComplianceReport_NeedDataSource"
GridLines
=
"None"
>
<
MasterTableView
Width
=
"100%"
/>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
</
telerik:RadGrid
>
protected void GridComplianceReport_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
Employee parentEmployee = new Employee();
Employee childEmployee = new Employee();
if (Session["Employee"] != null)
{
parentEmployee = (Employee)Session["Employee"];
}
if (Session["ChildEmployee"] != null)
{
childEmployee = (Employee)Session["ChildEmployee"];
if (Session["SelectedEmployeeID"].ToString() == parentEmployee.EmployeeID)
{
FillComplianceReport(parentEmployee);
}
else
{
FillComplianceReport(childEmployee);
}
}
else //no child employee, populate with logged in employee
{
FillComplianceReport(parentEmployee);
}
}
private void FillComplianceReport(Employee employee)
{
lblReportsHeader.Text = employee.Name;
string who = "";
ArrayList complianceType = new ArrayList();
ArrayList complianceStatus = new ArrayList();
List<
Reports
> complianceReport = new List<
Reports
>();
who = rdbEmployeeType.SelectedItem.Value;
foreach (ListItem item in chkComplianceTypes.Items)
{
if (item.Selected)
complianceType.Add(item.Value);
}
foreach (ListItem item in chkComplianceStatus.Items)
{
if (item.Selected)
complianceStatus.Add(item.Value);
}
complianceReport = EmployeeBLL.GetComplianceReports(employee.EmployeeID, who, complianceType, complianceStatus);
Session["ComplianceReport"] = complianceReport;
GridComplianceReport.DataSource = complianceReport;
if (compliancereport.Count > 0)
GridComplianceReport.Visible = true;
ReportsExceptionPanel.Visible = false;
}
protected void btnGenerateComplianceReport_Click(object sender, ImageClickEventArgs e)
{
GridComplianceReport.Visible = true;
GridComplianceReport.DataSource = null;
GridComplianceReport.Rebind();
}
RadWindow newWindow = new Telerik.Web.UI.RadWindow();
newWindow.ID = "HelpDeskMessageWindow";
newWindow.NavigateUrl = "ErrorPopup.aspx";
newWindow.AutoSize = true;
newWindow.Modal = true;
RadWindowManager1.Windows.Add(newWindow);
newWindow.VisibleOnPageLoad = true;