or
<
AppointmentTemplate
>
<
asp:HyperLink
ID
=
"lnkCase"
runat
=
"server"
ImageUrl
=
"~/Images/ViewCase_16.jpeg"
></
asp:HyperLink
>
<%# Eval("Subject")%>
</
AppointmentTemplate
>
<
telerik:RadScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
telerik:RadAjaxManager
ID
=
"AjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGridMaster"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGridMaster"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"RadGridMaster"
runat
=
"server"
OnNeedDataSource
=
"RadGridMaster_NeedDataSource"
OnPreRender
=
"RadGridMaster_PreRender"
OnItemCommand
=
"RadGridMaster_ItemCommand"
OnItemCreated
=
"RadGridMaster_ItemCreated"
>
<
MasterTableView
DataKeyNames
=
"ItemID"
>
<
Columns
>
</
Columns
>
<
NestedViewSettings
DataSourceID
=
"ItemID"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"ItemID"
MasterKeyField
=
"ItemID"
/>
</
ParentTableRelation
>
</
NestedViewSettings
>
<
NestedViewTemplate
>
<
asp:Panel
ID
=
"ChildPanel"
runat
=
"server"
>
<
telerik:RadGrid
ID
=
"RadGridChild"
runat
=
"server"
OnNeedDataSource
=
"RadGridChild_NeedDataSource"
OnItemCommand
=
"RadGridChild_ItemCommand"
>
<
MasterTableView
DataKeyNames
=
"DetailItemID"
CommandItemDisplay
=
"Top"
>
<
CommandItemSettings
AddNewRecordText
=
"Add Detail"
/>
<
Columns
></
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
asp:Panel
>
</
NestedViewTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
public
partial
class
TestGrid : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
RadGridMaster_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
using
(TestDataEntities de =
new
TestDataEntities())
{
(sender
as
RadGrid).DataSource = de.Table1.ToList();
}
}
protected
void
RadGridMaster_PreRender(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
RadGridMaster.MasterTableView.Items[0].Expanded =
true
;
var pnl = RadGridMaster.MasterTableView.Items[0].ChildItem.FindControl(
"ChildPanel"
)
as
Panel;
pnl.Visible =
true
;
pnl.Controls.OfType<RadGrid>().FirstOrDefault().Rebind();
}
}
protected
void
RadGridMaster_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.ExpandCollapseCommandName && e.Item
is
GridDataItem)
{
((GridDataItem)e.Item).ChildItem.FindControl(
"ChildPanel"
).Visible =
!e.Item.Expanded;
if
(!e.Item.Expanded)
{
(((GridDataItem)e.Item).ChildItem.FindControl(
"ChildPanel"
)
as
Panel).Controls.OfType<RadGrid>().FirstOrDefault().Rebind();
RadGrid RadGridChild2 =
new
RadGrid();
RadGridChild2.ID =
"RadGridChild2"
;
RadGridChild2.NeedDataSource += RadGridChild2_NeedDataSource;
RadGridChild2.ItemCommand += RadGridChild2_ItemCommand;
RadGridChild2.MasterTableView.DataKeyNames =
new
string
[] {
"ItemID"
};
RadGridChild2.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
RadGridChild2.MasterTableView.CommandItemSettings.AddNewRecordText =
"Add for 2"
;
RadGridChild2.AutoGenerateColumns =
false
;
RadGridChild2.MasterTableView.Columns.Add(
new
GridBoundColumn() { DataField =
"DetailItemID"
, HeaderText =
"Detail ID"
});
RadGridChild2.MasterTableView.Columns.Add(
new
GridBoundColumn() { DataField =
"ItemDetail"
, HeaderText =
"Detail"
});
(((GridDataItem)e.Item).ChildItem.FindControl(
"ChildPanel"
)
as
Panel).Controls.Add(RadGridChild2);
RadGridChild2.Rebind();
}
}
}
protected
void
RadGridMaster_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridNestedViewItem)
{
e.Item.FindControl(
"ChildPanel"
).Visible = ((GridNestedViewItem)e.Item).ParentItem.Expanded;
}
}
protected
void
RadGridChild_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
RadGrid rg = sender
as
RadGrid;
var temp = Convert.ToInt32((rg.NamingContainer
as
GridNestedViewItem).ParentItem.GetDataKeyValue(
"ItemID"
));
using
(TestDataEntities de =
new
TestDataEntities())
{
rg.DataSource = de.Table2.Where(x => x.ItemID == temp).ToList();
}
}
protected
void
RadGridChild_ItemCommand(
object
sender, GridCommandEventArgs e)
{
RadAjaxManager.GetCurrent(
this
.Page).Alert(
"Adding!"
);
}
protected
void
RadGridChild2_ItemCommand(
object
sender, GridCommandEventArgs e)
{
RadAjaxManager.GetCurrent(
this
.Page).Alert(
"Adding for 2!"
);
}
protected
void
RadGridChild2_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
RadGrid rg = sender
as
RadGrid;
rg.AutoGenerateColumns =
false
;
rg.MasterTableView.Columns.Clear();
rg.MasterTableView.Columns.Add(
new
GridBoundColumn() { DataField =
"DetailItemID"
, HeaderText =
"Detail ID"
});
rg.MasterTableView.Columns.Add(
new
GridBoundColumn() { DataField =
"ItemDetail"
, HeaderText =
"Detail"
});
var temp = Convert.ToInt32((rg.NamingContainer
as
GridNestedViewItem).ParentItem.GetDataKeyValue(
"ItemID"
));
using
(TestDataEntities de =
new
TestDataEntities())
{
rg.DataSource = de.Table2.Where(x => x.ItemID == temp).ToList();
}
}
}
<
telerik:Radscheduler
ID
=
"RadScheduler1"
runat
=
"server"
DisplayDeleteConfirmation
=
"true"
SelectedDate
=
"2011-11-15"
TimeZoneOffset
=
"03:00:00"
AppointmentStyleMode
=
"Default"
Height
=
""
Skin
=
"Office2007"
AllowInsert
=
"true"
AllowDelete
=
"true"
EnableDescriptionField
=
"true"
onappointmentdelete
=
"radSched_AppointmentDelete"
onappointmentinsert
=
"radSched_AppointmentInsert"
StartEditingInAdvancedForm
=
"true"
StartInsertingInAdvancedForm
=
"true"
onappointmentupdate
=
"radSched_AppointmentUpdate"
OnClientFormCreated
=
"radSched_ClientFormCreated"
>
<
TimelineView
UserSelectable
=
"false"
/>
<
AdvancedForm
Modal
=
"true"
/>
<
AdvancedEditTemplate
>
<
scheduler:SchedulerAdvancedForm
runat
=
"server"
ID
=
"AdvancedEditForm1"
Mode
=
"Edit"
Subject='<%# Bind("Subject") %>'
Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Description='<%# Bind("Description") %>' />
</
AdvancedEditTemplate
>
<
AdvancedInsertTemplate
>
<
scheduler:SchedulerAdvancedForm
runat
=
"server"
ID
=
"AdvancedEditForm1"
Mode
=
"Insert"
Subject='<%# Bind("Subject") %>'
Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Description='<%# Bind("Description") %>' />
</
AdvancedInsertTemplate
>
<
TimeSlotContextMenuSettings
EnableDefault
=
"true"
/>
<
AppointmentContextMenuSettings
EnableDefault
=
"true"
/>
</
telerik:Radscheduler
>
<
ul
class
=
"rsTimePickers"
>
<
li
class
=
"rsTimePick"
>
<
label
for='<%= StartDate.ClientID %>_dateInput_text'>
<%= Owner.Localization.AdvancedFrom %></
label
>
<%--
Leaving a newline here will affect the layout, so we use a comment instead.
--%><
telerik:RadDatePicker
runat
=
"server"
ID
=
"StartDate"
CssClass
=
"rsAdvDatePicker"
Width
=
"83px"
SharedCalendarID
=
"SharedCalendar"
Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
MinDate="1900-01-01">
<
DatePopupButton
Visible
=
"False"
/>
<
DateInput
ID
=
"DateInput2"
runat
=
"server"
DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false"/>
</
telerik:RadDatePicker
>
<%--
--%><
telerik:RadTimePicker
runat
=
"server"
ID
=
"StartTime"
CssClass
=
"rsAdvTimePicker"
Width
=
"65px"
Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
<
DateInput
ID
=
"DateInput3"
runat
=
"server"
EmptyMessageStyle-CssClass
=
"riError"
EmptyMessage
=
" "
EnableSingleInputRendering
=
"false"
/>
<
TimePopupButton
Visible
=
"false"
/>
<
TimeView
ID
=
"TimeView1"
runat
=
"server"
Columns
=
"2"
ShowHeader
=
"false"
StartTime
=
"08:00"
EndTime
=
"18:00"
Interval
=
"00:30"
/>
</
telerik:RadTimePicker
>
</
li
>
<
li
class
=
"rsTimePick"
>
<
label
for='<%= EndDate.ClientID %>_dateInput_text'>
<%= Owner.Localization.AdvancedTo%></
label
><%--
--%><
telerik:RadDatePicker
runat
=
"server"
ID
=
"EndDate"
CssClass
=
"rsAdvDatePicker"
Width
=
"83px"
SharedCalendarID
=
"SharedCalendar"
Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
MinDate="1900-01-01">
<
DatePopupButton
Visible
=
"False"
/>
<
DateInput
ID
=
"DateInput4"
runat
=
"server"
DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false"/>
</
telerik:RadDatePicker
>
<%--
--%><
telerik:RadTimePicker
runat
=
"server"
ID
=
"EndTime"
CssClass
=
"rsAdvTimePicker"
Width
=
"65px"
Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
<
DateInput
ID
=
"DateInput5"
runat
=
"server"
EmptyMessageStyle-CssClass
=
"riError"
EmptyMessage
=
" "
EnableSingleInputRendering
=
"false"
/>
<
TimePopupButton
Visible
=
"false"
/>
<
TimeView
ID
=
"TimeView2"
runat
=
"server"
Columns
=
"2"
ShowHeader
=
"false"
StartTime
=
"08:00"
EndTime
=
"18:00"
Interval
=
"00:30"
/>
</
telerik:RadTimePicker
>
</
li
>
<
li
class
=
"rsAllDayWrapper"
>
<
asp:CheckBox
runat
=
"server"
ID
=
"AllDayEvent"
CssClass
=
"rsAdvChkWrap"
Checked
=
"false"
/>
</
li
>
</
ul
>