108 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Data.SqlClient;
 | 
						|
using Csla;
 | 
						|
 | 
						|
namespace Templates
 | 
						|
{
 | 
						|
  [Serializable()]
 | 
						|
  class EditableRootList : 
 | 
						|
    BusinessListBase<EditableRootList, EditableChild>
 | 
						|
  {
 | 
						|
    #region Authorization Rules
 | 
						|
 | 
						|
    public static bool CanAddObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanGetObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanEditObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanDeleteObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Factory Methods
 | 
						|
 | 
						|
    public static EditableRootList NewEditableRootList()
 | 
						|
    {
 | 
						|
      return new EditableRootList();
 | 
						|
    }
 | 
						|
 | 
						|
    public static EditableRootList GetEditableRootList(int id)
 | 
						|
    {
 | 
						|
      return DataPortal.Fetch<EditableRootList>(new Criteria(id));
 | 
						|
    }
 | 
						|
 | 
						|
    private EditableRootList()
 | 
						|
    { /* Require use of factory methods */ }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Data Access
 | 
						|
 | 
						|
    [Serializable()]
 | 
						|
    private class Criteria
 | 
						|
    {
 | 
						|
      private int _id;
 | 
						|
      public int Id
 | 
						|
      {
 | 
						|
        get { return _id; }
 | 
						|
      }
 | 
						|
      public Criteria(int id)
 | 
						|
      { _id = id; }
 | 
						|
    }
 | 
						|
 | 
						|
    private void DataPortal_Fetch(Criteria criteria)
 | 
						|
    {
 | 
						|
      RaiseListChangedEvents = false;
 | 
						|
      // TODO: load values
 | 
						|
      using (SqlDataReader dr = null)
 | 
						|
      {
 | 
						|
        while (dr.Read())
 | 
						|
        {
 | 
						|
          this.Add(EditableChild.GetEditableChild(dr));
 | 
						|
        }
 | 
						|
      }
 | 
						|
      RaiseListChangedEvents = true;
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void DataPortal_Update()
 | 
						|
    {
 | 
						|
      RaiseListChangedEvents = false;
 | 
						|
      foreach (EditableChild item in DeletedList)
 | 
						|
        item.DeleteSelf();
 | 
						|
      DeletedList.Clear();
 | 
						|
 | 
						|
      foreach (EditableChild item in this)
 | 
						|
        if (item.IsNew)
 | 
						|
          item.Insert(this);
 | 
						|
        else
 | 
						|
          item.Update(this);
 | 
						|
      RaiseListChangedEvents = true;
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
  }
 | 
						|
}
 |