|
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Web.UI;
using AdventureWorks.Client.Objects;
using AdventureWorks.Services;
using Xomega.Framework;
using Xomega.Framework.Web;
namespace AdventureWorks.Client.Web
{
public partial class EmployeeDetails : Page
{
private EmployeeObject obj;
protected void Page_Init(object sender, EventArgs e)
{
obj = WebUtil.GetCachedObject<EmployeeObject>(WebUtil.GetCurrentPath(), !WebUtil.IsPostRequest());
if (!IsPostBack && !IsNew()) LoadData();
pnlMain.DataBind();
WebUtil.BindToObject(pnlMain, obj);
}
private bool IsNew()
{
return Request.QueryString.Count == 0;
}
private void LoadData()
{
int kEmployeeId;
if (!int.TryParse(Request.QueryString["EmployeeId"], out kEmployeeId)) return;
ChannelFactory<IEmployeeService> cfEmployee = new ChannelFactory<IEmployeeService>("IEmployeeService");
IEmployeeService svcEmployee = cfEmployee.CreateChannel();
obj.EmployeeIdProperty.Value = kEmployeeId;
EmployeeKey inRead = new EmployeeKey();
obj.ToDataContract(inRead);
obj.FromDataContract(svcEmployee.Read(inRead));
EmployeeKey inPayHistory_ReadList = new EmployeeKey();
obj.ToDataContract(inPayHistory_ReadList);
obj.PayHistoryObjectList.FromDataContract(svcEmployee.PayHistory_ReadList(inPayHistory_ReadList));
cfEmployee.Close();
btnDelete.Enabled = true;
}
protected void btnSave_Click(object sender, EventArgs e)
{
obj.Validate(true);
ErrorList valErr = obj.GetValidationErrors();
errors.List.DataSource = valErr.Errors;
errors.List.DataBind();
if (valErr.HasErrors()) return;
ChannelFactory<IEmployeeService> cfEmployee = new ChannelFactory<IEmployeeService>("IEmployeeService");
IEmployeeService svcEmployee = cfEmployee.CreateChannel();
// for new objects create the object and store a temporary key
if (IsNew()) obj.FromDataContract(svcEmployee.Create());
Employee_UpdateInput inUpdate = new Employee_UpdateInput();
obj.ToDataContract(inUpdate);
svcEmployee.Update(inUpdate);
svcEmployee.SaveChanges(true);
// read back the real key for newly created objects
if (IsNew())
{
EmployeeKey inRead = new EmployeeKey();
obj.ToDataContract(inRead);
obj.FromDataContract(svcEmployee.Read(inRead));
}
cfEmployee.Close();
obj.SetModified(false, true);
if (IsNew()) Response.Redirect(Request.CurrentExecutionFilePath
+ "?EmployeeId=" + obj.EmployeeIdProperty.Value);
}
protected void btnDelete_Click(object sender, EventArgs e)
{
ChannelFactory<IEmployeeService> cfEmployee = new ChannelFactory<IEmployeeService>("IEmployeeService");
IEmployeeService svcEmployee = cfEmployee.CreateChannel();
EmployeeKey inDelete = new EmployeeKey();
obj.ToDataContract(inDelete);
svcEmployee.Delete(inDelete);
svcEmployee.SaveChanges(true);
obj.SetModified(false, true);
Close();
}
protected void btnClose_Click(object sender, EventArgs e)
{
Close();
}
private void Close()
{
// TODO: transfer to the right page
Server.Transfer("~/_EmployeeSearch.aspx?run=1", false);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Xomega Team is striving to increase productivity and development quality by utilizing Model Driven Development coupled with Code Generation and the best design practices for application development.
We provide MDD tools, code generators and frameworks for Visual Studio and .Net development.
Visit us at
http://www.xomega.net