I'm using a nested RadGrid, which should only be populated when a particular row in the parent Rad Grid is expanded. This is working fine for the first page of the parent grid, and only the parent's NeedDataSource is fired. Also, the child nested grid's NeedDataSource is correctly only firing upon expanding a row.
However, when I page the parent grid to the second page, the NeedDataSource of the child RadGrid is firing for each row of the parent's RadGrid, even though none of the rows in the parent grid are expanded.
What can I do to fix this? TelerikRadGrid1 in my code below is the parent RadGrid, and TelerikRadGrid2 is the nested child RadGrid. SOrry if the code below is a bit long. I'm really stuck at this point. Thanks for any help!
However, when I page the parent grid to the second page, the NeedDataSource of the child RadGrid is firing for each row of the parent's RadGrid, even though none of the rows in the parent grid are expanded.
What can I do to fix this? TelerikRadGrid1 in my code below is the parent RadGrid, and TelerikRadGrid2 is the nested child RadGrid. SOrry if the code below is a bit long. I'm really stuck at this point. Thanks for any help!
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"IgnoreButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"UnMatchedClientDBCustomers_TelerikRadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"MatchButton"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"UnMatchedClientDBCustomers_TelerikRadGrid1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"UnMatchedClientDBCustomers_TelerikRadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"UnMatchedClientDBCustomers_TelerikRadGrid1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"PotentialMasterListDBMatches_TelerikRadGrid2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadGrid
ID
=
"runat"
UnMatchedClientDBCustomers_TelerikRadGrid1
=
"server"
AllowPaging
=
"true"
AllowSorting
=
"true"
AllowFilteringByColumn
=
"True"
AutoGenerateColumns
=
"false"
onneeddatasource
=
"UnMatchedClientDBCustomers_TelerikRadGrid1_NeedDataSource"
onitemcommand
=
"UnMatchedClientDBCustomers_TelerikRadGrid1_ItemCommand"
Width
=
"80%"
Style
=
"min-height: 360px;"
>
<
ClientSettings
>
<
Scrolling
AllowScroll
=
"false"
/>
</
ClientSettings
>
<
MasterTableView
DataKeyNames
=
"CustomerID, MemberID"
TableLayout
=
"Auto"
>
<
ColumnGroups
>
<
telerik:GridColumnGroup
Name
=
"Name"
HeaderText
=
"Name"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridColumnGroup
>
<
telerik:GridColumnGroup
Name
=
"Emails"
HeaderText
=
"Emails"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridColumnGroup
>
<
telerik:GridColumnGroup
Name
=
"Match"
HeaderText
=
"Match Criteria"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridColumnGroup
>
<
telerik:GridColumnGroup
Name
=
"Address"
HeaderText
=
"Address"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridColumnGroup
>
<
telerik:GridColumnGroup
Name
=
"Action"
HeaderText
=
"Action"
HeaderStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridColumnGroup
>
</
ColumnGroups
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
ShowExportToExcelButton
=
"true"
></
CommandItemSettings
>
<
RowIndicatorColumn
Visible
=
"True"
FilterControlAltText
=
"Filter RowIndicator column"
></
RowIndicatorColumn
>
<
ExpandCollapseColumn
Visible
=
"True"
FilterControlAltText
=
"Filter ExpandColumn column"
></
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridTemplateColumn
HeaderText
=
"Ignore"
ColumnGroupName
=
"Action"
AllowFiltering
=
"false"
><
HeaderStyle
Width
=
"50px"
/>
<
ItemTemplate
>
<
asp:LinkButton
ID
=
"IgnoreButton"
runat
=
"server"
Text
=
"Ignore"
OnClientClick
=
"IgnoreConfirm()"
CommandName
=
"IgnoreButtonClick"
CommandArgument='<%#Eval("CustomerID")%>' />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"CustomerID"
HeaderText
=
"CustomerID"
UniqueName
=
"CustomerID"
Visible
=
"false"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"MemberID"
HeaderText
=
"Member Number"
UniqueName
=
"MemberNumber"
ColumnGroupName
=
"Name"
FilterControlWidth
=
"50px"
><
HeaderStyle
Width
=
"50px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LastName"
HeaderText
=
"Last Name"
UniqueName
=
"LastName"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"FirstName"
HeaderText
=
"First Name"
UniqueName
=
"First"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"50px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Email"
HeaderText
=
"Email"
UniqueName
=
"Email"
ColumnGroupName
=
"Emails"
FilterControlWidth
=
"130px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LoginID"
HeaderText
=
"Login ID"
UniqueName
=
"LoginID"
ColumnGroupName
=
"Emails"
FilterControlWidth
=
"130px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"MemberNoMatch"
HeaderText
=
"Member Number Match"
UniqueName
=
"MemberNoMatch"
ColumnGroupName
=
"Match"
><
HeaderStyle
Width
=
"50px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LastNameMatch"
HeaderText
=
"Last Name Match"
UniqueName
=
"LastNameMatch"
ColumnGroupName
=
"Match"
FilterControlWidth
=
"130px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"EmailMatch"
HeaderText
=
"Email Match"
UniqueName
=
"EmailMatch"
ColumnGroupName
=
"Match"
FilterControlWidth
=
"130px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Company"
HeaderText
=
"Company"
UniqueName
=
"Company"
ColumnGroupName
=
"Address"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Address"
HeaderText
=
"Address"
UniqueName
=
"Address"
ColumnGroupName
=
"Address"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"City"
HeaderText
=
"City"
UniqueName
=
"City"
ColumnGroupName
=
"Address"
FilterControlWidth
=
"50px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"State"
HeaderText
=
"State"
UniqueName
=
"State"
ColumnGroupName
=
"Address"
FilterControlWidth
=
"30px"
><
HeaderStyle
Width
=
"20px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"PostalCode"
HeaderText
=
"Postal Code"
UniqueName
=
"PostalCode"
ColumnGroupName
=
"Address"
FilterControlWidth
=
"50px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Phone"
HeaderText
=
"Phone Number"
UniqueName
=
"Phone"
ColumnGroupName
=
"Address"
FilterControlWidth
=
"50px"
><
HeaderStyle
Width
=
"100px"
/><
ItemStyle
Wrap
=
"true"
/></
telerik:GridBoundColumn
>
</
Columns
>
<
NestedViewTemplate
>
<
div
>
<
telerik:RadGrid
ID
=
"PotentialMasterListDBMatches_TelerikRadGrid2"
runat
=
"server"
OnNeedDataSource
=
"PotentialMasterListDBMatches_TelerikRadGrid2_NeedDataSource"
AutoGenerateColumns
=
"false"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridTemplateColumn
HeaderText
=
"Update"
ColumnGroupName
=
"Action"
AllowFiltering
=
"false"
><
HeaderStyle
Width
=
"40px"
/>
<
ItemTemplate
>
<
asp:LinkButton
ID
=
"MatchButton"
runat
=
"server"
Text
=
"Match"
OnClientClick
=
"MatchConfirm()"
OnClick
=
"MatchButton_Click"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"ClientDBCustomerID"
HeaderText
=
"CustomerID"
UniqueName
=
"ClientDBCustomerID"
Display
=
"false"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"MemberID"
HeaderText
=
"Member Number"
UniqueName
=
"SBMemberNumber"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"50px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LastName"
HeaderText
=
"Last Name"
UniqueName
=
"Last"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"100px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"FullName"
HeaderText
=
"Full Name"
UniqueName
=
"Full"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"200px"
/><
HeaderStyle
Width
=
"100px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"AdmitDate"
HeaderText
=
"Admit Date"
UniqueName
=
"AdmitDate"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"25px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Status"
HeaderText
=
"Status"
UniqueName
=
"Status"
ColumnGroupName
=
"Name"
><
HeaderStyle
Width
=
"15px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"PrivateEmail"
HeaderText
=
"Private Email"
UniqueName
=
"PrivateEmail"
ColumnGroupName
=
"Emails"
><
HeaderStyle
Width
=
"100px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"PublicEmail"
HeaderText
=
"Public Email"
UniqueName
=
"PublicEmail"
ColumnGroupName
=
"Emails"
><
HeaderStyle
Width
=
"100px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"FirmName"
HeaderText
=
"Firm Name"
UniqueName
=
"FirmName"
ColumnGroupName
=
"Address"
><
HeaderStyle
Width
=
"100px"
/></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Address"
HeaderText
=
"Address"
UniqueName
=
"Address"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"City"
HeaderText
=
"City"
UniqueName
=
"City"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"State"
HeaderText
=
"State"
UniqueName
=
"State"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Country"
HeaderText
=
"Country"
UniqueName
=
"Country"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ZipCode"
HeaderText
=
"Zip Code"
UniqueName
=
"ZipCode"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Phone"
HeaderText
=
"Phone"
UniqueName
=
"Phone"
ColumnGroupName
=
"Address"
></
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<%--<
asp:LinkButton
ID
=
"CustomMatch"
runat
=
"server"
Text
=
"Custom Match"
></
asp:LinkButton
>--%>
</
div
>
</
NestedViewTemplate
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
<
PagerStyle
PageSizes
=
"5,10"
PagerTextFormat="{4}Currently we have <strong>{5}</
strong
> members matching your search criteria"
PageSizeLabelText="Members per page:" />
</
MasterTableView
>
<
PagerStyle
PageSizeControlType
=
"RadComboBox"
></
PagerStyle
>
<
FilterMenu
EnableImageSprites
=
"False"
></
FilterMenu
>
<
ExportSettings
SuppressColumnDataFormatStrings
=
"false"
IgnorePaging
=
"true"
HideStructureColumns
=
"true"
OpenInNewWindow
=
"true"
ExportOnlyData
=
"true"
>
<
Excel
Format
=
"Biff"
></
Excel
>
</
ExportSettings
>
</
telerik:RadGrid
>
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
}
}
protected
void
UnMatchedClientDBCustomers_TelerikRadGrid1_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
List<ClientDBUnmatchedDetail> ClientDBUnmatchedDetails_UnMatchedCustomers_BindToTelerikRadGrid;
using
(ClientDBEntities ClientDBContext =
new
ClientDBEntities())
{
ClientDBUnmatchedDetails_UnMatchedCustomers_BindToTelerikRadGrid = ClientDBContext.ClientDBUnmatchedDetails.ToList();
}
UnMatchedClientDBCustomers_TelerikRadGrid1.DataSource = ClientDBUnmatchedDetails_UnMatchedCustomers_BindToTelerikRadGrid;
}
protected
void
PotentialMasterListDBMatches_TelerikRadGrid2_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
GridDataItem parentItem = ((sender
as
RadGrid).NamingContainer
as
GridNestedViewItem).ParentItem
as
GridDataItem;
var MemberID = parentItem.GetDataKeyValue(
"MemberID"
).ToString();
string
CustomerID = parentItem.GetDataKeyValue(
"CustomerID"
).ToString();
List<UnMatchedMasterListDBMembers> MasterListDBUnMatchedDetails_PotentialMasterListDBMatches_BindToTelerikRadGrid =
null
;
// If there is match between member numbers
if
(parentItem[
"MemberNoMatch"
].Text ==
bool
.TrueString)
{
decimal
dMemberID = Convert.ToDecimal(MemberID);
using
(appsEntities appsEntitiescontext =
new
appsEntities())
{
MasterListDBUnMatchedDetails_PotentialMasterListDBMatches_BindToTelerikRadGrid = appsEntitiescontext.membership_all
.Where(x => x.MemNumber == dMemberID)
.Select(y =>
new
UnMatchedMasterListDBMembers()
{
ClientDBCustomerID = CustomerID,
MemberDetails = y
}).ToList();
}
}
// If there is match between email addresses
else
if
(parentItem[
"EmailMatch"
].Text ==
bool
.TrueString)
{
string
email = (parentItem[
"Email"
].Text).Trim().ToLower().ToString();
using
(var appsEntitiescontext =
new
appsEntities())
{
MasterListDBUnMatchedDetails_PotentialMasterListDBMatches_BindToTelerikRadGrid = appsEntitiescontext.membership_all
.Where(x => x.PrivateEmail.Trim().ToLower().ToString() == email || x.PublicEmail.Trim().ToLower().ToString() == email)
.Select(y =>
new
UnMatchedMasterListDBMembers()
{
ClientDBCustomerID = CustomerID,
MemberDetails = y
}).ToList();
}
}
// If there is match between Last Names, then get the corresponding MasterDB members
else
if
(parentItem[
"LastNameMatch"
].Text ==
bool
.TrueString)
{
string
lastName = (parentItem[
"LastName"
].Text).Trim().ToLower().ToString();
using
(var context =
new
appsEntities())
{
MasterListDBUnMatchedDetails_PotentialMasterListDBMatches_BindToTelerikRadGrid = context.membership_all
.Where(x => x.LastName.Trim().ToLower() == lastName)
.Select(y =>
new
UnMatchedMasterListDBMembers()
{
ClientDBCustomerID = CustomerID,
MemberDetails = y
}).ToList();
}
}
(sender
as
RadGrid).DataSource = MasterListDBUnMatchedDetails_PotentialMasterListDBMatches_BindToTelerikRadGrid;
}
protected
void
UnMatchedClientDBCustomers_TelerikRadGrid1_ItemCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if
(e.CommandName ==
"ExpandCollapse"
&& e.Item
is
GridDataItem)
{
GridDataItem parentItem_ClientDBCustomer_TelerikRADGrid1Row = e.Item
as
GridDataItem;
RadGrid childItem_potentialMasterListDBMemberMatches_TelerikRADGrid2 = parentItem_ClientDBCustomer_TelerikRADGrid1Row.ChildItem.FindControl(
"PotentialMasterListDBMatches_TelerikRadGrid2"
)
as
RadGrid;
//rg.ItemCommand += new GridCommandEventHandler(UpdateButton_Click);
childItem_potentialMasterListDBMemberMatches_TelerikRADGrid2.Rebind();
}
else
if
(e.CommandName ==
"IgnoreButtonClick"
&& e.Item
is
GridDataItem)
{
string
confirmValue = Request.Form[
"ConfirmIgnore"
];
if
(confirmValue ==
"Yes"
)
{
GridDataItem item = e.Item
as
GridDataItem;
var MemberID = item.GetDataKeyValue(
"MemberID"
).ToString();
var CustomerID = item.GetDataKeyValue(
"CustomerID"
).ToString();
try
{
using
(TransactionScope scope =
new
TransactionScope())
{
using
(ClientDBEntities ClientDBContext =
new
ClientDBEntities())
{
// Find the ClientDB customer who's being ignored in the ClientDBUnmatchedDetails db table
ClientDBUnmatchedDetail ClientDBUnMatchedDetails_CustomerToBeIgnored = ClientDBContext.ClientDBUnmatchedDetails.Where(x => x.CustomerID == CustomerID).FirstOrDefault();
//check if customer is already in the ClientDBIgnore table
bool
CustomerAlreadyExistsIn_ClientDBIgnore =
false
;
CustomerAlreadyExistsIn_ClientDBIgnore = ClientDBContext.ClientDBIgnore.Any(x => x.CustomerID == CustomerID);
if
(!CustomerAlreadyExistsIn_ClientDBIgnore)
{
//add the Ignored ClientDB Customer to the ClientDBIgnore db table
ClientDBContext.ClientDBIgnore.AddObject(
new
ClientDBIgnore()
{
CustomerID = CustomerID.ToString(),
MemberID = MemberID,
FirstName = ClientDBUnMatchedDetails_CustomerToBeIgnored.FirstName,
LastName = ClientDBUnMatchedDetails_CustomerToBeIgnored.LastName,
Email = ClientDBUnMatchedDetails_CustomerToBeIgnored.Email,
LoginID = ClientDBUnMatchedDetails_CustomerToBeIgnored.LoginID,
Company = ClientDBUnMatchedDetails_CustomerToBeIgnored.Company,
Address = ClientDBUnMatchedDetails_CustomerToBeIgnored.Address,
City = ClientDBUnMatchedDetails_CustomerToBeIgnored.City,
State = ClientDBUnMatchedDetails_CustomerToBeIgnored.State,
PostalCode = ClientDBUnMatchedDetails_CustomerToBeIgnored.PostalCode,
MemberNoMatch = ClientDBUnMatchedDetails_CustomerToBeIgnored.MemberNoMatch,
LastNameMatch = ClientDBUnMatchedDetails_CustomerToBeIgnored.LastNameMatch,
EmailMatch = ClientDBUnMatchedDetails_CustomerToBeIgnored.EmailMatch
}
);
}
// No need to do anything to the associated courses/credits information because they will already be in the ClientDBUnMatchedCreditDetails db table
//delete the Ignored ClientDB Customer from the ClientDBUnmatchedDetails db table
ClientDBContext.ClientDBUnmatchedDetails.DeleteObject(ClientDBUnMatchedDetails_CustomerToBeIgnored);
// Save changes
ClientDBContext.SaveChanges();
//scope.Complete();
}
scope.Complete();
}
UnMatchedClientDBCustomers_TelerikRadGrid1.Rebind();
// If Transaction successfull and complete, notify the user
ScriptManager.RegisterStartupScript(
this
,
this
.GetType(),
"alert"
,
"alert('ClientDB Customer Ignored')"
,
true
);
}
catch
(Exception Ex)
{
// In case of failure, notify the user
ScriptManager.RegisterStartupScript(
this
,
this
.GetType(),
"alert"
,
"alert('Error Ignoring the ClientDB Customer. Try doin it again or please call IT HelpDesk')"
,
true
);
}
}
}
}
public
void
MatchButton_Click(
object
sender, EventArgs e)
{
string
confirmValue = Request.Form[
"ConfirmMatch"
];
if
(confirmValue ==
"Yes"
)
{
GridDataItem ClientDBCustomer_TelerikRADGrid1Row = ((LinkButton)sender).Parent.Parent
as
GridDataItem;
var MemberID = ClientDBCustomer_TelerikRADGrid1Row[
"MasterListDBMemberNumber"
].Text;
var CustomerID = ClientDBCustomer_TelerikRADGrid1Row[
"ClientDBCustomerID"
].Text;
try
{
using
(TransactionScope scope =
new
TransactionScope())
{
using
(ClientDBEntities ClientDBContext =
new
ClientDBEntities())
{
//find the manually matched ClientDB customer in the ClientDBUnmatchedDetails table
ClientDBUnmatchedDetail deleteClientDBUnMatchedMemberObject = ClientDBContext.ClientDBUnmatchedDetails.Where(x => x.CustomerID == CustomerID).Single();
// check if customer is already in the ClientDBRules tables
bool
CustomerAlreadyExistsIn_ClientDBRules =
false
;
CustomerAlreadyExistsIn_ClientDBRules = ClientDBContext.ClientDBRules.Any(x => x.CustomerID == CustomerID);
if
(!CustomerAlreadyExistsIn_ClientDBRules)
{
//add the manually matched ClientDB Customer to the ClientDBRules db table
ClientDBContext.ClientDBRules.AddObject(
new
ClientDBRule()
{
CustomerID = CustomerID,
MemberID = MemberID,
FirstName = deleteClientDBUnMatchedMemberObject.FirstName,
LastName = deleteClientDBUnMatchedMemberObject.LastName,
Email = deleteClientDBUnMatchedMemberObject.Email,
LoginID = deleteClientDBUnMatchedMemberObject.LoginID,
Company = deleteClientDBUnMatchedMemberObject.Company,
Address = deleteClientDBUnMatchedMemberObject.Address,
City = deleteClientDBUnMatchedMemberObject.City,
State = deleteClientDBUnMatchedMemberObject.State,
PostalCode = deleteClientDBUnMatchedMemberObject.PostalCode,
MemberNoMatch = deleteClientDBUnMatchedMemberObject.MemberNoMatch,
LastNameMatch = deleteClientDBUnMatchedMemberObject.LastNameMatch,
EmailMatch = deleteClientDBUnMatchedMemberObject.EmailMatch
}
);
}
//find all matching courses/credits (and which will be removed) from the ClientDBUnMatchedCreditDetails table for this ClientDB customer
IQueryable<ClientDBUnMatchedCreditDetails> deleteClientDBUnmatchedCreditDetailsObjects = ClientDBContext.ClientDBUnMatchedCreditDetails.Where(x => x.CustomerID == CustomerID);
//for each matching course in the ClientDBUnMatchedCreditDetails table
foreach
(ClientDBUnMatchedCreditDetails deleteClientDBUnmatchedCreditDetailsObject
in
deleteClientDBUnmatchedCreditDetailsObjects)
{
//if course does not exist in ClientDBCreditDetails table, add that course to ClientDBCreditDetails
bool
courseAlreadyExistsInClientDBCreditDetails =
false
;
//courseAlreadyExistsInClientDBCreditDetails = ClientDBContext.ClientDBCreditDetails.Where(x => x.RegistrationID == deleteClientDBUnmatchedCreditDetailsObject.RegistrationID).SingleOrDefault() != null;
courseAlreadyExistsInClientDBCreditDetails = ClientDBContext.ClientDBCreditDetails.Any(x => x.RegistrationID == deleteClientDBUnmatchedCreditDetailsObject.RegistrationID);
if
(!courseAlreadyExistsInClientDBCreditDetails)
{
//add course to ClientDBCreditDetails
ClientDBContext.ClientDBCreditDetails.AddObject(
new
ClientDBCreditDetail()
{
RegistrationID = deleteClientDBUnmatchedCreditDetailsObject.RegistrationID,
CustomerID = deleteClientDBUnmatchedCreditDetailsObject.CustomerID,
MemberID = deleteClientDBUnmatchedCreditDetailsObject.MemberID,
CreditType = deleteClientDBUnmatchedCreditDetailsObject.CreditType,
TotalHours = deleteClientDBUnmatchedCreditDetailsObject.TotalHours,
General = deleteClientDBUnmatchedCreditDetailsObject.General,
Ethics = deleteClientDBUnmatchedCreditDetailsObject.Ethics,
Bias = deleteClientDBUnmatchedCreditDetailsObject.Bias,
SubstanceAbuse = deleteClientDBUnmatchedCreditDetailsObject.SubstanceAbuse,
Other = deleteClientDBUnmatchedCreditDetailsObject.Other,
ProductID = deleteClientDBUnmatchedCreditDetailsObject.ProductID,
ProductTitle = deleteClientDBUnmatchedCreditDetailsObject.ProductTitle,
CompletionDate = deleteClientDBUnmatchedCreditDetailsObject.CompletionDate,
}
);
}
// else
// do nothing
// and then delete that course from the ClientDBUnMatchedCreditDetails table
ClientDBContext.ClientDBUnMatchedCreditDetails.DeleteObject(deleteClientDBUnmatchedCreditDetailsObject);
}
//delete the manually matched ClientDB Customer from ClientDBUnmatchedDetails db table
ClientDBContext.ClientDBUnmatchedDetails.DeleteObject(deleteClientDBUnMatchedMemberObject);
//save changes to the db
ClientDBContext.SaveChanges();
//scope.Complete();
}
scope.Complete();
}
UnMatchedClientDBCustomers_TelerikRadGrid1.Rebind();
// If Transaction successfull and complete, notify the user
ScriptManager.RegisterStartupScript(
this
,
this
.GetType(),
"alert"
,
"alert('Match Successful')"
,
true
);
}
catch
(Exception Ex)
{
// In case of failure, notify the user
ScriptManager.RegisterStartupScript(
this
,
this
.GetType(),
"alert"
,
"alert('Error Executing the match rule. Try doing it again or please call IT HelpDesk')"
,
true
);
}
}
}