Hi,
I have a RadGrid in UserControl and I am trying to perform basic Crud operation using Inline edit per this demo.http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/entityframeworkcrud/defaultcs.aspx . This functionality works in another page where we dont use usercontrol. Please help.
User Control.
CodeBehind
I have a RadGrid in UserControl and I am trying to perform basic Crud operation using Inline edit per this demo.http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/entityframeworkcrud/defaultcs.aspx . This functionality works in another page where we dont use usercontrol. Please help.
User Control.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FollowUp.ascx.cs"
Inherits="MedAssets.AMS.Web.Controls.FollowUp" %>
<
style
type
=
"text/css"
>
.RemoveEdit
{
display:none !important;
color:lightblue !important;
}
</
style
>
<
ContentTemplate
>
<
div
class
=
"formLayoutE"
id
=
"divStatus"
runat
=
"server"
style
=
"padding-left: 15px; padding-right: 5px; padding-top: 5px"
>
<
asp:Panel
ID
=
"pnlMain"
runat
=
"server"
Height
=
"95%"
Width
=
"70%"
>
<
telerik:RadTabStrip
ID
=
"tbStripFollowUp"
runat
=
"server"
MultiPageID
=
"RadMultiPage1"
Skin
=
"Vista"
SelectedIndex
=
"0"
CssClass
=
"tabStrip"
CausesValidation
=
"False"
OnTabClick
=
"tbStripFollowUp_TabClick"
EnableViewState
=
"False"
>
<
Tabs
>
<
telerik:RadTab
Text
=
"Current"
SelectedCssClass
=
"horizontalTabSelected"
Selected
=
"True"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"History"
SelectedCssClass
=
"horizontalTabSelected"
>
</
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
ID
=
"RadMultiPage1"
runat
=
"server"
SelectedIndex
=
"0"
CssClass
=
"multiPage"
align
=
"left"
Width
=
"100%"
EnableViewState
=
"false"
>
<
telerik:RadPageView
ID
=
"RadPageView1"
runat
=
"server"
>
<
h3
class
=
"formLayoutE_functionsheader"
>Scheduler</
h3
><
br
/> <
br
/>
<
telerik:RadGrid
ID
=
"grdFollowUpAlert"
runat
=
"server"
AutoGenerateColumns
=
"false"
Skin
=
"Windows7"
Width
=
"640px"
EnableViewState
=
"True"
AllowAutomaticDeletes
=
"False"
AllowAutomaticInserts
=
"False"
AllowAutomaticUpdates
=
"False"
OnItemCommand
=
"grdFollowUpAlert_ItemCommand"
OnItemDataBound
=
"grdFollowUpAlert_ItemDataBound"
OnNeedDataSource
=
"grdFollowUpAlert_NeedsDataSource"
OnInsertCommand
=
"grdFollowUpAlert_InsertCommand"
OnUpdateCommand
=
"grdFollowUpAlert_UpdateCommand"
OnDeleteCommand
=
"grdFollowUpAlert_DeleteCommand"
OnCancelCommand
=
"grdFollowUpAlert_CancelCommand"
>
<
ValidationSettings
ValidationGroup
=
"GroupAlphaRange"
/>
<
MasterTableView
DataKeyNames
=
"Id"
CommandItemDisplay
=
"Top"
EditMode
=
"EditForms"
>
<
CommandItemSettings
AddNewRecordText
=
"Add FollowUp"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"FollowUpDateTime"
HeaderStyle-Width
=
"100px"
HeaderText
=
"FollowUp Date"
UniqueName
=
"FollowUpDateTime"
DataFormatString
=
"{0:MM/dd/yyyy hh:mm tt}"
/>
<
telerik:GridBoundColumn
DataField
=
"Reason"
HeaderStyle-Width
=
"140px"
HeaderText
=
"Reason"
UniqueName
=
"Reason"
DefaultInsertValue
=
" "
/>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderStyle-Width
=
"100px"
HeaderText
=
"Activity"
DefaultInsertValue
=
" "
/>
<
telerik:GridBoundColumn
DataField
=
"CreatedBy"
HeaderStyle-Width
=
"55px"
UniqueName
=
"CreatedBy"
HeaderText
=
"Created By"
/>
<
telerik:GridButtonColumn
ConfirmText
=
"Delete this item?"
ConfirmDialogType
=
"RadWindow"
UniqueName
=
"DeleteImageButton"
HeaderStyle-Width
=
"15px"
ConfirmTitle
=
"Confirm Delete"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
/>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditImageButton"
HeaderStyle-Width
=
"15px"
/>
<
telerik:GridBoundColumn
DataField
=
"Id"
Visible
=
"false"
/>
<
telerik:GridBoundColumn
DataField
=
"AccountId"
HeaderStyle-Width
=
"2px"
HeaderText
=
"AccountId"
UniqueName
=
"AccountId"
Visible
=
"False"
/>
<
telerik:GridBoundColumn
DataField
=
"WorkflowActivitySpecTypeId"
HeaderStyle-Width
=
"2px"
HeaderText
=
"WorkflowActivitySpecTypeId"
UniqueName
=
"WorkflowActivitySpecTypeId"
Visible
=
"False"
/>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
InsertCaption
=
"Add Followup"
CaptionFormatString
=
"Edit Followup"
>
<
FormTemplate
>
<
table
>
<
tr
>
<
td
>Assign From:</
td
>
<
td
><
telerik:RadComboBox
runat
=
"server"
ID
=
"dropdownActivity"
OnInit
=
"OnInit_dropdownActivity"
AppendDataBoundItems
=
"True"
/></
td
>
<
td
>
</
td
>
</
tr
>
<
tr
>
<
td
>FollowUP DateTime:</
td
>
<
td
><
telerik:RadDateTimePicker
ID
=
"followUpStartDate"
runat
=
"server"
AutoPostBack
=
"false"
TimeView-RenderDirection
=
"Vertical"
Width
=
"200px"
/></
td
>
<
td
>
<
asp:RequiredFieldValidator
ID
=
"valfollowUpStartDate"
runat
=
"server"
ControlToValidate
=
"followUpStartDate"
ValidationGroup
=
"valGroup"
EnableClientScript
=
"false"
SetFocusOnError
=
"true"
Text
=
"FollowUp Date is required"
Display
=
"Dynamic"
/>
<
asp:CustomValidator
ID
=
"valCustomFollowUpDateEndDateTime"
runat
=
"server"
ControlToValidate
=
"followUpStartDate"
ValidationGroup
=
"valGroup"
ValidateEmptyText
=
"false"
OnServerValidate
=
"ValidateFollowUpDateTimes"
Text
=
"FollowUp Date shouuld be greater than current date"
Display
=
"Dynamic"
/>
</
td
>
</
tr
>
<
tr
>
<
td
valign
=
"top"
>Reason:</
td
>
<
td
colspan
=
"3"
>
<
telerik:RadTextBox
id
=
"txtReason"
runat
=
"server"
MaxLength
=
"200"
Columns
=
"40"
TextMode
=
"MultiLine"
Rows
=
"4"
SelectionOnFocus
=
"SelectAll"
Text='<%# Bind("Reason") %>'/>
</
td
>
</
tr
>
<
tr
>
<
td
valign
=
"top"
>Task Complete?:</
td
>
<
td
colspan
=
"3"
>
<
asp:CheckBox
id
=
"cbxTaskComplete"
runat
=
"server"
Text
=
"Match on Task Complete"
/>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"3"
>
<
asp:Button
ID
=
"btnSave"
runat
=
"server"
Text='<%# (Container is GridEditFormInsertItem) ? "Add" : "Update" %>'
CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
ValidationGroup="valGroup" SkinID="Windows7">
</
asp:Button
>
<
asp:Button
runat
=
"server"
ID
=
"btnCancel"
Text
=
"Cancel"
Width
=
"75px"
CommandName
=
"Cancel"
SkinID
=
"Windows7"
/>
</
td
>
</
tr
>
</
table
>
</
FormTemplate
>
</
EditFormSettings
>
<
NoRecordsTemplate
>There are no Follow Up entries to display.</
NoRecordsTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView2"
runat
=
"server"
CssClass
=
"pageViewEducation"
>
<
br
/>
<
h3
class
=
"formLayoutE_functionsheader"
>Follow Up History</
h3
><
br
/> <
br
/>
<
telerik:RadGrid
ID
=
"grdFollowUpHistory"
runat
=
"server"
CssClass
=
"Grid"
Width
=
"90%"
Height
=
"90%"
OnNeedDataSource
=
"grdFollowUpHistory_NeedsDataSource"
OnItemDataBound
=
"grdFollowUpHistory_ItemDataBound"
Skin
=
"Windows7"
AutoGenerateColumns
=
"false"
GridLines
=
"Vertical"
AllowSorting
=
"True"
AllowPaging
=
"True"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
/>
<
MasterTableView
DataKeyNames
=
"FollowupID"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"FollowUpDateTime"
HeaderStyle-Width
=
"40px"
HeaderText
=
"FollowUp Date"
UniqueName
=
"FollowUpDateTime"
DataFormatString
=
"{0:MM/dd/yyyy hh:mm tt}"
/>
<
telerik:GridBoundColumn
DataField
=
"Reason"
HeaderStyle-Width
=
"80px"
HeaderText
=
"Reason"
UniqueName
=
"Reason"
DefaultInsertValue
=
" "
/>
<
telerik:GridBoundColumn
DataField
=
"Name"
HeaderStyle-Width
=
"40px"
UniqueName
=
"Name"
HeaderText
=
"Activity"
DefaultInsertValue
=
" "
/>
<
telerik:GridBoundColumn
DataField
=
"CreatedBy"
HeaderStyle-Width
=
"40px"
HeaderText
=
"Created By"
/>
<
telerik:GridBoundColumn
DataField
=
"WorkflowActivitySpecTypeId"
HeaderStyle-Width
=
"2px"
HeaderText
=
"WorkflowActivitySpecTypeId"
UniqueName
=
"WorkflowActivitySpecTypeId"
Visible
=
"False"
/>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
asp:Panel
>
</
div
>
</
ContentTemplate
>
CodeBehind
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using MedAssets.AAA;
using MedAssets.AMS.Business.Common;
using MedAssets.AMS.Business.WorkDistribution;
using MedAssets.AMS.Common;
using MedAssets.AMS.DataAccess;
using MedAssets.AMS.Web.Admin.WorkDistribution;
using MedAssets.AMS.Workflow;
using MedAssets.Aaa.Security;
using MedAssets.Aaa.TaskQueues;
using MedAssets.Aaa.Users;
using MedAssets.Log;
using MedAssets.AMS.Workflow;
using StructureMap;
using Telerik.Web.UI;
namespace MedAssets.AMS.Web.Controls
{
public partial class FollowUp : BaseWorkflowControl
{
private const string mTimeZoneCookieName = "TZOS"; // Time zone Offset
private IWorkFollowup iWorkFollowup = new WorkFollowup();
private IWorkflow m_workflow;
public IWorkflow Workflow
{
get
{
var workflow = m_workflow ?? (m_workflow = WorkflowService.GetActiveWorkflowForAccount(AccountADT.Account.Id));
return workflow ?? (new Workflow.Workflow(new WorkflowKey(AccountADT.Account.FacilityId, Guid.NewGuid())) { AccountId = AccountADT.AccountId });
}
set { m_workflow = value; }
}
private CultureInfo enUS = new CultureInfo("en-US");
private int? activitySpecTypeId;
private DateTime followUpDate;
private Boolean isComplete = false;
private string reason = string.Empty;
private Guid followUpId;
protected void OnPreInit(EventArgs e)
{
setCookieForTimezoneOffset();
}
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
m_workflow = WorkflowService.GetActiveWorkflowForAccount(AccountADT.Account.Id);
PopulateGrid("grdFollowUpAlert", true);
PopulateGrid("grdFollowUpHistory", true);
// RadScheduler1.TimeZoneOffset = new TimeSpan(getTimezoneOffset(), 0, 0);
InitializeAppointments();
}
}
private static int GetEnumValue(Enum wfEnum )
{
return (int)Enum.Parse(wfEnum.GetType(), wfEnum.ToString());
}
private void InitializeAppointments()
{
//DateTime start = DateTime.UtcNow.Date;
//start = start.AddHours(6);
//Appointments.Add(new AppointmentInfo("Take the car to the service", start, start.AddHours(1), string.Empty, null, new Reminder(30).ToString(), 1));
//Appointments.Add(new AppointmentInfo("Meeting with Alex", start.AddHours(2), start.AddHours(3), string.Empty, null, string.Empty, 2));
//start = start.AddDays(-1);
//DateTime dayStart = RadScheduler1.UtcDayStart(start);
//Appointments.Add(new AppointmentInfo("Bob's Birthday", dayStart, dayStart.AddDays(1), string.Empty, null, string.Empty, 1));
//Appointments.Add(new AppointmentInfo("Call Charlie about the Project", start.AddHours(2), start.AddHours(3), string.Empty, null, string.Empty, 2));
//start = start.AddDays(2);
//Appointments.Add(new AppointmentInfo("Get the car from the service", start.AddHours(2), start.AddHours(3), string.Empty, null, string.Empty, 1));
}
public override void Populate()
{
}
private void PopulateGrid(string gridName, bool needRebind)
{
var cbo = (RadGrid)FindControlRecursive(Page, gridName);
if (gridName == "grdFollowUpAlert")
{
//if(IsWorkFlowOverridden(Workflow))
//{
// //var tbControl = (RadTab)FindControlRecursive(Page, "Current");
// //tbControl.Visible = false;
// return;
//}
if (cbo != null)
{
cbo.DataSource = GetFollowUpDetails().Where(a => a.IsComplete == false);
}
}
if (gridName == "grdFollowUpHistory")
{
if (cbo != null)
{
cbo.DataSource = GetFollowUpDetails().Where(a => a.IsComplete == true);
if (needRebind) { cbo.Rebind(); }
}
}
}
private IEnumerable<
WorkFollowup
> GetFollowUpDetails()
{
return ObjectFactory.GetInstance<
IWorkflowFollowupManager
>().GetWorkflowFollowUp(AccountId, FacilityId);
}
private void SaveFollowUp(IWorkFollowup workfollowup)
{
ObjectFactory.GetInstance<
IWorkflowFollowupManager
>().Save(workfollowup);
}
private void DeleteFollowUp(Guid followUpId)
{
ObjectFactory.GetInstance<
IWorkflowFollowupManager
>().Delete(followUpId);
}
private void setCookieForTimezoneOffset()
{
if (Request.Cookies[mTimeZoneCookieName] == null)
{
Page.ClientScript.RegisterStartupScript(GetType(), "Timezone",
string.Format
( @"<
script
language
=
""
javascript"">document.cookie = ""{0}="" + new Date().getTimezoneOffset(); </
script
>",
mTimeZoneCookieName));
}
}
public int TimezoneOffset
{
get
{
return getTimezoneOffset();
}
}
private int getTimezoneOffset()
{
int returnValue = (Request.Cookies[mTimeZoneCookieName] == null) ? 0 : Convert.ToInt32(Request.Cookies[mTimeZoneCookieName].Value);
// JavaScript returns 300 if the offset is -5 offset so I convert the number
return (returnValue / 60) * -1;
}
private IWorkDistributionManager _workDistributionManager;
private IWorkDistributionManager WorkDistributionManager
{
get
{
return _workDistributionManager ??
(_workDistributionManager = ObjectFactory.GetInstance<
IWorkDistributionManager
>());
}
}
private IUserTreeManager _userTreeManager;
private IUserTreeManager UserTreeManager
{
get { return _userTreeManager ?? (_userTreeManager = ObjectFactory.GetInstance<
IUserTreeManager
>()); }
}
private ITaskQueueImpersonation iTaskQueueImpersonation = new TaskQueueImpersonation();
protected void grdFollowUpAlert_NeedsDataSource(object sender, GridNeedDataSourceEventArgs args)
{
PopulateGrid("grdFollowUpAlert", false);
}
protected void grdFollowUpHistory_NeedsDataSource(object sender, GridNeedDataSourceEventArgs args)
{
PopulateGrid("grdFollowUpHistory", false);
}
protected void grdFollowUpAlert_ItemCommand(object sender, GridCommandEventArgs e)
{
switch (e.CommandName)
{
//cancel default edit command and load the edited data in the external form
case RadGrid.EditCommandName:
//iTaskQueueImpersonation = WorkDistributionManager.GetTaskQueueImpersonation(
// (Guid)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"]);
e.Item.OwnerTableView.IsItemInserted = false;
break;
case RadGrid.InitInsertCommandName:
grdFollowUpAlert.MasterTableView.ClearEditItems();
break;
}
}
protected void grdFollowUpAlert_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem)
{
}
if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
{
if (e.Item.OwnerTableView.IsItemInserted)
{
var insertedItem = (GridEditFormItem)e.Item;
var ctlFollowUpStartDate = (RadDateTimePicker)insertedItem.FindControl("followUpStartDate");
ctlFollowUpStartDate.MinDate = DateTime.Today;
}
else
{
iWorkFollowup = (IWorkFollowup)e.Item.DataItem;
GridEditFormItem edititem = (GridEditFormItem)e.Item;
var ctldropdownActivity = (RadComboBox)edititem.FindControl("dropdownActivity");
RadComboBoxItem itemAc =
ctldropdownActivity.FindItemByValue(iWorkFollowup.WorkflowActivitySpecTypeId.ToString());
itemAc.Selected = true;
var minDate = iWorkFollowup.FollowupDateTime;
var ctlFollowUpDate = (RadDateTimePicker)edititem.FindControl("followUpStartDate");
ctlFollowUpDate.MinDate = minDate;
ctlFollowUpDate.DbSelectedDate = iTaskQueueImpersonation.StartDate.ToString();
var isComplete = (CheckBox)edititem.FindControl("cbxTaskComplete");
isComplete.Checked = iWorkFollowup.IsComplete;
}
}
if (e.Item is GridDataItem)
{
GridDataItem ditem = (GridDataItem)e.Item;
TableCell accountCell = (TableCell)ditem["AccountId"];
if (IsWorkFlowOverriddenByAccountId(new Guid(accountCell.Text)))
{
ditem.Display = false;
}
else
{
//GridEditCommandColumn editcol = (GridEditCommandColumn)["EditImageButton"].Controls[0];
TableCell userCell = (TableCell) ditem["CreatedBy"];
if (userCell.Text != HttpContext.Current.User.Identity.Name)
{
var imgBtn = (ImageButton)ditem["DeleteImageButton"].Controls[0];
ditem["EditImageButton"].CssClass = "RemoveEdit";
var lnk = ditem["EditImageButton"].Controls[0] as LinkButton;
ditem["EditImageButton"].Controls.Remove(lnk);
imgBtn.Visible = false;
//editcol.Display = false;
}
}
TableCell specTypeId = (TableCell)ditem["WorkflowActivitySpecTypeId"];
TableCell specTypeName = (TableCell)ditem["Name"];
var en = (WorkflowActivitySpecType)Convert.ToInt32(specTypeId.Text);
specTypeName.Text = en.Description();
TableCell followUpDateTime = (TableCell) ditem["FollowUpDateTime"];
DateTime dt = DateTime.ParseExact(followUpDateTime.Text, "g", enUS, DateTimeStyles.None);
//DateTime dt = DateTime.ParseExact(followUpDateTime.Text, "yyyyMMddHHmm", null);
//DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);
dt = dt.AddHours(TimezoneOffset);
followUpDateTime.Text = dt.ToString();
//if(!string.IsNullOrEmpty(specTypeId.Text))
//{
//
// var wf = GetWorkFlowByAccountId(new Guid(accountCell.Text));
// var fid = new Guid("A73FC5C9-B2EC-4DE7-992C-07F38797CC9E");
// //var specTypeList =
// // GetWorkFlowSpecByFacilityId(Workflow.FacilityId).Where(a => a.SpecType == en);
// var specTypeList =
// GetWorkFlowSpecByFacilityId(fid).Where(a => a.SpecType == en);
// foreach(var list in specTypeList )
// {
// foreach(var ts in list.TaskSpecList)
// {
// ts.WorkflowActivitySpecId = en;
// }
// }
// TableCell activitySpecTypeNameCell = (TableCell)ditem["Name"];
// activitySpecTypeNameCell.Text = (specTypeList.Count() > 0)? specTypeList.FirstOrDefault().Name :string.Empty;
//}
}
}
protected void grdFollowUpHistory_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem ditem = (GridDataItem) e.Item;
TableCell specTypeId = (TableCell) ditem["WorkflowActivitySpecTypeId"];
TableCell specTypeName = (TableCell) ditem["Name"];
var en = (WorkflowActivitySpecType) Convert.ToInt32(specTypeId.Text);
specTypeName.Text = en.Description();
TableCell followUpDateTime = (TableCell) ditem["FollowUpDateTime"];
DateTime dt = DateTime.ParseExact(followUpDateTime.Text, "g", enUS, DateTimeStyles.None);
//DateTime dt = DateTime.ParseExact(followUpDateTime.Text, "yyyyMMddHHmm", null);
//DateTime loadedDate = DateTime.ParseExact(loadedString, "d", null);
dt = dt.AddHours(TimezoneOffset);
followUpDateTime.Text = dt.ToString();
}
}
private static string GetDescription(Enum en)
{
Type type = en.GetType();
MemberInfo[] memInfo = type.GetMember(en.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs != null && attrs.Length > 0)
{
return ((DescriptionAttribute)attrs[0]).Description;
}
}
return en.ToString();
}
protected void grdFollowUpAlert_InsertCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid)
{
return;
}
//Get the GridEditFormInsertItem of the RadGrid
GridEditFormInsertItem insertedItem = (GridEditFormInsertItem)e.Item;
//Access the textbox from the insert form template and store the values in variables.
var specType = (WorkflowActivitySpecType)System.Enum.Parse(typeof(WorkflowActivitySpecType), ((RadComboBox)insertedItem.FindControl("dropdownActivity")).SelectedItem.Text);
var x = (int) specType;
//activitySpecTypeId = ((RadComboBox)insertedItem.FindControl("dropdownActivity")).SelectedIndex > 0 ?
// : null;
// Convert.ToInt32(((RadComboBox)insertedItem.FindControl("dropdownActivity")).SelectedItem.Value);
followUpDate = (DateTime)((RadDateTimePicker)insertedItem.FindControl("followUpStartDate")).DbSelectedDate;
var radReason = ((RadTextBox)insertedItem.FindControl("txtReason")).Text;
if (radReason != string.Empty)
reason = radReason;
isComplete = ((CheckBox)insertedItem.FindControl("cbxTaskComplete")).Checked;
followUpId = (Guid)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];
IWorkFollowup iworkfollowup = new WorkFollowup(new WorkFollowupKey(Guid.NewGuid()));
iworkfollowup = UpdateFollowUp(iworkfollowup, false);
SaveFollowUp(iworkfollowup);
}
protected void grdFollowUpAlert_UpdateCommand(object sender, GridCommandEventArgs e)
{
if (!Page.IsValid)
{
return;
}
//Get the GridEditableItem of the RadGrid
GridEditableItem editedItem = e.Item as GridEditableItem;
//Access the textbox from the edit form template and store the values in variables.
if (editedItem != null)
{
activitySpecTypeId =
Convert.ToInt32(((RadComboBox)editedItem.FindControl("dropdownActivity")).SelectedItem.Value);
followUpDate = (DateTime)((RadDatePicker)editedItem.FindControl("followUpStartDate")).DbSelectedDate;
var radReason = ((RadTextBox)editedItem.FindControl("txtReason")).Text;
reason = radReason != string.Empty ? radReason : string.Empty;
followUpId = (Guid)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];
isComplete = ((CheckBox)editedItem.FindControl("cbxTaskComplete")).Checked;
IWorkFollowup iworkfollowup = new WorkFollowup(new WorkFollowupKey(followUpId));
iworkfollowup = UpdateFollowUp(iworkfollowup, false);
SaveFollowUp(iworkfollowup);
}
}
private IWorkFollowup UpdateFollowUp(IWorkFollowup workfollowup, bool isNew)
{
workfollowup.AccountId = AccountId;
workfollowup.FacilityId = FacilityId;
workfollowup.WorkflowActivitySpecTypeId = activitySpecTypeId;
workfollowup.FacilityId = FacilityId;
workfollowup.FollowupDateTime = followUpDate;
if (isNew)
{
if (reason != string.Empty)
workfollowup.Reason = reason;
workfollowup.IsComplete = false;
workfollowup.CreatedBy = HttpContext.Current.User.Identity.Name;
workfollowup.CreatedOn = DateTime.Now;
}
else
{
workfollowup.Reason = reason == string.Empty ? null : reason;
workfollowup.IsComplete = isComplete;
workfollowup.ModifiedBy = HttpContext.Current.User.Identity.Name;
workfollowup.ModifiedOn = DateTime.Now;
//workfollowup.FollowupId = followUpId;
}
return workfollowup;
}
protected void grdFollowUpAlert_DeleteCommand(object sender, GridCommandEventArgs e)
{
var id = (Guid)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"];
DeleteFollowUp(id);
}
protected void grdFollowUpAlert_CancelCommand(object sender, GridCommandEventArgs e)
{
//grdFollowUpAlert.Rebind();
}
protected void ValidateFollowUpDateTimes(object sender, ServerValidateEventArgs args)
{
var validator = (CustomValidator)sender;
var editItem = (GridEditFormItem)validator.NamingContainer;
var ctlfollowUpDate = (RadDateTimePicker)editItem.FindControl("followUpStartDate");
var dbSelectedDate = ctlfollowUpDate.DbSelectedDate;
var dateFollowUp = (DateTimeOffset?)((DateTime)dbSelectedDate);
args.IsValid = dateFollowUp > DateTime.Now;
}
protected void OnInit_dropdownActivity(object sender, EventArgs e)
{
LoadDropdown();
}
private void LoadDropdown()
{
var cbo = (RadComboBox)FindControlRecursive(Page, "dropdownActivity");
if (cbo != null)
{
cbo.Items.Clear();
var enumList = Enum.GetValues(typeof(WorkflowActivitySpecType)).Cast<
WorkflowActivitySpecType
>().ToList();
cbo.DataSource = enumList;
//cbo.DataTextField = "Name";
//cbo.DataValueField = "WorkflowActivitySpecTypeId";
cbo.DataBind();
cbo.Items.Insert(0, new Telerik.Web.UI.RadComboBoxItem { Text = "--Select a Value--", Value = "--Select a Value--" });
cbo.SelectedIndex = 0;
}
}
public static Control FindControlRecursive(Control root, string id)
{
if (id == string.Empty)
return null;
if (root.ID == id)
return root;
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
private bool IsWorkFlowOverridden(IWorkflow workflow)
{
var workflowStatus = workflow.WorkflowStatus;
return (workflowStatus == WorkflowStatus.AutoAccountOverride ||
workflowStatus == WorkflowStatus.ManualAccountOverride);
}
private bool IsWorkFlowOverriddenByAccountId(Guid accountId)
{
var workflow = WorkflowService.GetActiveWorkflowForAccount(accountId) ??
(new Workflow.Workflow(new WorkflowKey(AccountADT.Account.FacilityId, Guid.NewGuid())) { AccountId = accountId });
var workflowStatus = workflow.WorkflowStatus;
return (workflowStatus == WorkflowStatus.AutoAccountOverride ||
workflowStatus == WorkflowStatus.ManualAccountOverride);
}
private IWorkflow GetWorkFlowByAccountId(Guid accountId)
{
return WorkflowService.GetActiveWorkflowForAccount(accountId) ??
(new Workflow.Workflow(new WorkflowKey(AccountADT.Account.FacilityId, Guid.NewGuid())) { AccountId = accountId });
}
private IEnumerable<
IWorkflowActivitySpec
> GetWorkFlowSpecByFacilityId(Guid facilityId)
{
return ObjectFactory.GetInstance<
IWorkflowFollowupManager
>().GetWorkflowSpecByFaclilityId(facilityId);
}
protected void tbStripFollowUp_TabClick(object sender, RadTabStripEventArgs e)
{
}
}
}