or
using
System.Web.UI;
using
Telerik.Web.UI;
namespace
Telerik.Web.Examples.Scheduler.Default
{
public
partial
class
DefaultCS : System.Web.UI.Page
{
private
const
int
AppointmentsLimit = 1;
private
bool
ExceedsLimit(Appointment apt)
{
int
appointmentsCount = 0;
foreach
(Appointment existingApt
in
RadScheduler1.Appointments.GetAppointmentsInRange(apt.Start, apt.End))
{
if
(existingApt.Visible)
appointmentsCount++;
}
return
(appointmentsCount > AppointmentsLimit - 1);
}
private
bool
AppointmentsOverlap(Appointment appointment)
{
if
(ExceedsLimit(appointment))
{
foreach
(Appointment a
in
RadScheduler1.Appointments.GetAppointmentsInRange(appointment.Start, appointment.End))
{
if
(a.ID != appointment.ID)
{
return
true
;
}
}
}
return
false
;
}
private
void
RegisterScript()
{
Label1.Text =
"Invalid move! There are appointments arranged for this time period."
;
ScriptManager.RegisterClientScriptBlock(
this
, GetType(),
"LabelUpdated"
,
"$telerik.$('.lblError').show().animate({ opacity: 0.9 }, 2000).fadeOut('slow');"
,
true
);
}
protected
void
RadScheduler1_AppointmentInsert(
object
sender, SchedulerCancelEventArgs e)
{
if
(ExceedsLimit(e.Appointment))
{
e.Cancel =
true
;
RegisterScript();
}
}
protected
void
RadScheduler1_AppointmentUpdate(
object
sender, AppointmentUpdateEventArgs e)
{
if
(AppointmentsOverlap(e.ModifiedAppointment))
{
e.Cancel =
true
;
RegisterScript();
}
}
protected
void
RadScheduler1_RecurrenceExceptionCreated(
object
sender, RecurrenceExceptionCreatedEventArgs e)
{
if
(AppointmentsOverlap(e.ExceptionAppointment))
{
e.Cancel =
true
;
RegisterScript();
}
}
}
}
protected
bool
ExceedsLimit(Appointment apt)
{
foreach
(Appointment existingApt
in
RadScheduler1.Appointments.GetAppointmentsInRange(apt.Start, apt.End))
{
foreach
(Resource existingRes
in
existingApt.Resources.GetResourcesByType(
"User"
))
{
if
(((apt.Resources.GetResource(existingRes.Type, existingRes.Key)) !=
null
))
{
return
true
;
}
}
}
return
false
;
}
private
bool
AppointmentsOverlap(Appointment appointment)
{
foreach
(Appointment a
in
RadScheduler1.Appointments.GetAppointmentsInRange(appointment.Start, appointment.End))
{
if
(ExceedsLimit(appointment) && a.ID != appointment.ID)
{
return
true
;
}
}
return
false
;
}
protected
void
RadScheduler1_AppointmentInsert(
object
sender, Telerik.Web.UI.SchedulerCancelEventArgs e)
{
if
(ExceedsLimit(e.Appointment))
{
Messages.Text =
"This resource has already been scheduled for this time slot."
;
e.Cancel =
true
;
}
}
protected
void
RadScheduler1_AppointmentUpdate(
object
sender, Telerik.Web.UI.AppointmentUpdateEventArgs e)
{
if
(AppointmentsOverlap(e.ModifiedAppointment))
{
Messages.Text =
"This resource has already been scheduled for this time slot."
;
e.Cancel =
true
;
}
}
<
telerik:RadMaskedTextBox
Mask
=
"###-##-####"
runat
=
"server"
ID
=
"txtSSN"
Width
=
"200px"
AutoPostBack
=
"true"
OnTextChanged
=
"ssnchanged"
>
</
telerik:RadMaskedTextBox
>
protected
void
ssnchanged(
object
sender, EventArgs e)
{
if
(txtSSN.Text.Length != 9)
{
RadWindowManager1.VisibleOnPageLoad =
true
;
string
scriptstring =
"radalert('You must save Employee Information to proceed further..', 250, 80,'Information');"
;
ScriptManager.RegisterStartupScript(
this
,
this
.GetType(),
"radalert"
, scriptstring,
true
);
}
}
protected void oRgRoulement_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
// Hide the Action TemplateColumn in edit mode
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
(oRgRoulement.MasterTableView.GetColumn("Action") as GridTemplateColumn).Visible = false;
}
var
lastFocused;
function
pasteFromExcel() {
debugger;
if
(!lastFocused)
return
;
var
clipData = window.clipboardData.getData(
'Text'
);
var
crlf = String.fromCharCode(13) + String.fromCharCode(10);
var
table = clipData.split(crlf);
for
(
var
tRow = 0; tRow < table.length - 1; tRow++)
table[tRow] = table[tRow].split(String.fromCharCode(9));
Array.remove(table, table[table.length - 1]);
fillTable(table);
}
function
fillTable(table) {
var
pCell = lastFocused.parentNode;
var
pRow = pCell.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
var
pBody = pRow.parentNode;
var
maxRows = pBody.rows.length;
var
maxCols = pRow.cells.length;
for
(
var
row = 0; row < table.length; row++) {
for
(
var
col = 0; col < table[row].length; col++) {
debugger;
var
cCellIndex = pCell.parentNode.cellIndex + col;
var
cRowIndex = pRow.sectionRowIndex + row;
if
(cRowIndex < maxRows && cCellIndex < maxCols) {
var
cCell = pBody.rows[cRowIndex].cells[cCellIndex];
var
pInput = cCell.getElementsByTagName(
"input"
)[0];
pInput.style.backgroundColor =
"#F7FAFF"
;
if
(cCellIndex == 0)
pInput.value =
new
Date(Date.parse(table[row][col]));
else
if
(cCellIndex == 2)
pInput.value = parseFloat(table[row][col]);
else
pInput.value = table[row][col];
}
}
}
}
function
gridFocus(e) {
e = e || window.event;
var
target = e.target || e.srcElement;
if
(target.tagName.toLowerCase() ==
"input"
&& target.type.toLowerCase() ==
"text"
)
lastFocused = target;
}
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowFilteringByColumn
=
"false"
AllowMultiRowEdit
=
"true"
AutoGenerateColumns
=
"false"
AllowPaging
=
"false"
PageSize
=
"1000"
AllowSorting
=
"True"
CellSpacing
=
"0"
DataSourceID
=
"RadGrid1TableDataSource"
GridLines
=
"None"
Skin
=
"Office2007"
RegisterWithScriptManager
=
"false"
ShowFooter
=
"true"
EnableLinqExpressions
=
"false"
ValidationSettings-EnableValidation
=
"false"
OnClick
=
"gridFocus(event)"
>
<
MasterTableView
EditMode
=
"InPlace"
DataKeyNames
=
"PeriodID"
AllowAutomaticDeletes
=
"true"
AllowAutomaticInserts
=
"true"
CommandItemDisplay
=
"Bottom"
>
<
columns
>
<
telerik:GridBoundColumn
DataField
=
"PeriodID"
UniqueName
=
"PeriodID"
HeaderText="<%$ Resources:GlobalResources, PeriodID %>"
Visible="false" />
<
telerik:GridTemplateColumn
DataField
=
"RepaymentDate"
UniqueName
=
"RepaymentDate"
HeaderText="<%$ Resources:GlobalResources, RepaymentDate %>"
FooterText="Totals:">
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "RepaymentDate", "{0:dd MMM yyyy}")%>
</
ItemTemplate
>
<
EditItemTemplate
>
<
telerik:RadDatePicker
ID
=
"RepaymentDatePicker"
runat
=
"server"
RegisterWithScriptManager
=
"false"
SelectedDate='<%# DataBinder.Eval(Container.DataItem, "RepaymentDate") == DBNull.Value ? (DateTime?)null : DataBinder.Eval(Container.DataItem, "RepaymentDate")%>' />
</
EditItemTemplate
>
<
InsertItemTemplate
>
<
telerik:RadDatePicker
ID
=
"RepaymentDatePicker"
runat
=
"server"
RegisterWithScriptManager
=
"false"
/>
</
InsertItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"MovementTypeText"
UniqueName
=
"MovementTypeText"
HeaderText="<%$ Resources:GlobalResources, MovementTypeText %>" />
<
telerik:GridNumericColumn
DataField
=
"OutstandingBeforeRepaymentAmount"
UniqueName
=
"OutstandingBeforeRepaymentAmount"
HeaderText="<%$ Resources:GlobalResources, OutstandingBeforeRepaymentAmount %>"
NumericType="Number" />
</
columns
>
<
CommandItemTemplate
>
<
table
cellpadding
=
"5"
style
=
"width: 100%"
>
<
tr
>
<
td
align
=
"left"
>
<
asp:LinkButton
ID
=
"btnAddNewRecord"
runat
=
"server"
CommandName
=
"InitInsertSpecial"
>
<
img
style
=
"border:0px"
alt
=
""
src
=
"../Images/add.png"
/>Add New Record
</
asp:LinkButton
>
<
telerik:RadNumericTextBox
ID
=
"txtLineNum"
runat
=
"server"
Type
=
"Number"
Value
=
"1"
MinValue
=
"1"
MaxValue
=
"30"
ClientEvents-OnKeyPress
=
"CommandKeyPress"
>
<
NumberFormat
GroupSeparator
=
""
DecimalDigits
=
"0"
/>
</
telerik:RadNumericTextBox
>
</
td
>
<
td
align
=
"center"
>
<
asp:LinkButton
ID
=
"btnPasteFromExcel"
runat
=
"server"
OnClientClick
=
"pasteFromExcel(); return false;"
>
Paste From Excel
</
asp:LinkButton
>
</
td
>
<
td
align
=
"right"
>
<
asp:LinkButton
ID
=
"btnDeleteSelected"
runat
=
"server"
CommandName
=
"DeleteSelected"
OnClientClick
=
"javascript:return confirm('Delete all selected periods?')"
>
<
img
src
=
"../Images/delete.png"
alt
=
""
style
=
"border:0px"
/>Delete Selected
</
asp:LinkButton
>
</
td
>
</
tr
>
</
table
>
</
CommandItemTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>