I have a scenario where certian users of an administrator group need to be able to view all appointments for any users in my scheduler(see screen shot 1) which works just fine. Now I need to limit what users are displayed on the add/edit addointment screen based on my security model(see screen shot 2). Is this possible? Currently my OnDataBound Event only displays users on the add/Edit for that have been selected from the checkbox list.
protected
void
RadScheduler1_OnDataBound(
object
sender, EventArgs e)
{
foreach
(Resource res
in
RadScheduler1.Resources.GetResourcesByType(
"User Name"
))
{
RadScheduler1.Resources.Remove(res);
}
List<Resource> list =
new
List<Resource>();
foreach
(Telerik.Web.UI.Appointment a
in
RadScheduler1.Appointments.GetAppointmentsInRange(RadScheduler1.VisibleRangeStart, RadScheduler1.VisibleRangeEnd))
{
Resource userName = a.Resources.GetResourceByType(
"User Name"
);
if
(userName !=
null
&& !list.Contains(userName))
{
list.Add(userName);
}
foreach
(ListItem l
in
cblUsers.Items)
{
if
(l.Selected)
{
Resource name =
new
Resource(
"User Name"
,
int
.Parse(l.Value), l.Text);
if
(!list.Contains(name))
{
list.Add(name);
}
}
}
//using (ProNetData d = new ProNetData())
//{
// var users = (from c in d.AppointmentUsersAssigned.Include("User")
// select new { UserID = c.UserID, UserName = c.User.LastName + ", " + c.User.FirstName.Substring(0, 1) }).ToList();
// foreach (var v in users)
// {
// Resource name = new Resource("User Name", v.UserID, v.UserName);
// if (!list.Contains(name))
// {
// list.Add(name);
// }
// }
//}
}
list.Sort(
delegate
(Resource resA, Resource resB)
{
return
resA.Text.CompareTo(resB.Text);
});
RadScheduler1.Resources.AddRange(list);
RadScheduler1.ResourceTypes.FindByName(
"User Name"
).AllowMultipleValues =
true
;
}